summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorawar Singh2017-06-30 11:54:22 +0530
committerJorawar Singh2017-06-30 11:54:22 +0530
commit4c6f1a8cced5610ab5075ea61c507c1dbc25f520 (patch)
tree798ae26a88891509424f8ade489b87cbf2af2093
parent815306982a4ea8eaaa2106fadcd1472aa2a9dcd5 (diff)
parentf805bc9553b3d88d7c9e7dbf59486c5da490231e (diff)
downloadScilab2C-4c6f1a8cced5610ab5075ea61c507c1dbc25f520.tar.gz
Scilab2C-4c6f1a8cced5610ab5075ea61c507c1dbc25f520.tar.bz2
Scilab2C-4c6f1a8cced5610ab5075ea61c507c1dbc25f520.zip
merged main repo with local
-rw-r--r--2.3-1/includes/lapack.h9
-rw-r--r--2.3-1/includes/sci2clib.h132
-rw-r--r--2.3-1/libraries/blasplus.libbin0 -> 23128 bytes
-rw-r--r--2.3-1/libraries/lapack.libbin0 -> 119452 bytes
-rw-r--r--2.3-1/macros/ASTManagement/%equal_string.sci2
-rw-r--r--2.3-1/macros/ASTManagement/%funcall_string.sci9
-rw-r--r--2.3-1/macros/ASTManagement/%operatio_string.sci14
-rw-r--r--2.3-1/macros/ASTManagement/%operation_string.sci2
-rw-r--r--2.3-1/macros/ASTManagement/AST2Ccode.sci90
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleCC.sci69
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci45
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleFunCC.sci176
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleFunRC.sci178
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleIfElse.sci6
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleRC.sci88
-rw-r--r--2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci60
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci2
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci4
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci51
-rw-r--r--2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci11
-rw-r--r--2.3-1/macros/ASTManagement/GenOutArgNames.sci110
-rw-r--r--2.3-1/macros/ASTManagement/_funcall_string.sci9
-rw-r--r--2.3-1/macros/ASTManagement/_operatio_string.sci2
-rw-r--r--2.3-1/macros/ASTManagement/_operation_string.sci2
-rw-r--r--2.3-1/macros/ASTManagement/libbin1864 -> 4861 bytes
-rw-r--r--2.3-1/macros/ASTManagement/names4
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenDeclarations_Dup.sci187
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci19
-rw-r--r--2.3-1/macros/CCodeGeneration/C_GenerateMkfle_arduino.sci12
-rw-r--r--2.3-1/macros/CCodeGeneration/C_IfExpression.sci31
-rw-r--r--2.3-1/macros/CCodeGeneration/C_WhileExpression.sci28
-rw-r--r--2.3-1/macros/CCodeGeneration/GetClsFileName.sci4
-rw-r--r--2.3-1/macros/CCodeGeneration/libbin1008 -> 2449 bytes
-rw-r--r--2.3-1/macros/CCodeGeneration/names2
-rw-r--r--2.3-1/macros/ErrorMessages/libbin436 -> 379 bytes
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_FSFIRLIN_SZ.sci9
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci3
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_MODSN.sci11
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_SZ_U_SVA.sci39
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_ASCII.sci10
-rw-r--r--2.3-1/macros/FunctionAnnotation/FA_TP_MODSN.sci10
-rw-r--r--2.3-1/macros/FunctionAnnotation/libbin2268 -> 7053 bytes
-rw-r--r--2.3-1/macros/FunctionAnnotation/names5
-rw-r--r--2.3-1/macros/FunctionList/libbin504 -> 741 bytes
-rw-r--r--2.3-1/macros/GeneralFunctions/libbin1132 -> 2809 bytes
-rw-r--r--2.3-1/macros/Hardware/AVR/libbin972 -> 2265 bytes
-rw-r--r--2.3-1/macros/Hardware/RasberryPi/libbin892 -> 2037 bytes
-rw-r--r--2.3-1/macros/ImageProcessing/core/libbin524 -> 293 bytes
-rw-r--r--2.3-1/macros/ImageProcessing/highgui/libbin584 -> 471 bytes
-rw-r--r--2.3-1/macros/ImageProcessing/imgproc/libbin752 -> 1145 bytes
-rw-r--r--2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci3
-rw-r--r--2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci4
-rw-r--r--2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci2
-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/libbin512 -> 759 bytes
-rw-r--r--2.3-1/macros/Scilab-Arduino/names5
-rw-r--r--2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci15
-rw-r--r--2.3-1/macros/SymbolTable/ST_InsOutArg.sci2
-rw-r--r--2.3-1/macros/SymbolTable/ST_InsOutArg_Dup.sci195
-rw-r--r--2.3-1/macros/SymbolTable/libbin728 -> 1199 bytes
-rw-r--r--2.3-1/macros/SymbolTable/names1
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci1355
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci4
-rw-r--r--2.3-1/macros/ToolInitialization/INIT_SCI2C.sci4
-rw-r--r--2.3-1/macros/ToolInitialization/ManageNextConversion.sci2
-rw-r--r--2.3-1/macros/ToolInitialization/libbin804 -> 1543 bytes
-rw-r--r--2.3-1/macros/cb_sci2c_gui.sci73
-rw-r--r--2.3-1/macros/findDeps/getAllHeaders.sci53
-rw-r--r--2.3-1/macros/findDeps/getAllInterfaces.sci49
-rw-r--r--2.3-1/macros/findDeps/getAllSources.sci75
-rw-r--r--2.3-1/macros/findDeps/getArduinoFiles.sci1
-rw-r--r--2.3-1/macros/findDeps/libbin596 -> 679 bytes
-rw-r--r--2.3-1/macros/libbin536 -> 649 bytes
-rw-r--r--2.3-1/macros/runsci2c.sci6
-rw-r--r--2.3-1/macros/sci2c_gui.sci38
-rw-r--r--2.3-1/macros/scilab2c.sci42
-rw-r--r--2.3-1/src/c/CACSD/includes/lqr.h2
-rw-r--r--2.3-1/src/c/CACSD/interfaces/int_lqr.h9
-rw-r--r--2.3-1/src/c/CACSD/lqe/dlqea.c2
-rw-r--r--2.3-1/src/c/CACSD/lqr/dlqra.c42
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/dsinca.c46
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/int_sinc.h18
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/sinc.h27
-rw-r--r--2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c31
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/dgcda.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcda.c60
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcds.c32
-rw-r--r--2.3-1/src/c/elementaryFunctions/discrete_mathematics/lcm/u8lcma.c68
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/gcd.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/isreal.h30
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/lcm.h27
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/linspace.h3
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/nextpow2.h28
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/sec.h2
-rw-r--r--2.3-1/src/c/elementaryFunctions/includes/sinc.h29
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_gcd.h25
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_isreal.h22
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_lcm.h27
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_linspace.h4
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_nextpow2.h26
-rw-r--r--2.3-1/src/c/elementaryFunctions/interfaces/int_sinc.h19
-rw-r--r--2.3-1/src/c/elementaryFunctions/isreal/disreals.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/isreal/sisreals.c17
-rw-r--r--2.3-1/src/c/elementaryFunctions/linspace/slinspacea.c49
-rw-r--r--2.3-1/src/c/elementaryFunctions/linspace/slinspaces.c33
-rw-r--r--2.3-1/src/c/elementaryFunctions/nextpow2/dnextpow2a.c30
-rw-r--r--2.3-1/src/c/interpolation/includes/interp1.h32
-rw-r--r--2.3-1/src/c/interpolation/interfaces/int_interp1.h32
-rw-r--r--2.3-1/src/c/interpolation/interp1/dinterp13a.c75
-rw-r--r--2.3-1/src/c/interpolation/interp1/sinterp13a.c75
-rw-r--r--2.3-1/src/c/linearAlgebra/bdiag/dbdiaga.c23
-rw-r--r--2.3-1/src/c/linearAlgebra/hess/dhessa.c81
-rw-r--r--2.3-1/src/c/linearAlgebra/includes/hess.h26
-rw-r--r--2.3-1/src/c/linearAlgebra/includes/spec.h59
-rw-r--r--2.3-1/src/c/linearAlgebra/includes/sva.h29
-rw-r--r--2.3-1/src/c/linearAlgebra/includes/svd.h30
-rw-r--r--2.3-1/src/c/linearAlgebra/interfaces/int_hess.h28
-rw-r--r--2.3-1/src/c/linearAlgebra/interfaces/int_spec.h79
-rw-r--r--2.3-1/src/c/linearAlgebra/interfaces/int_sva.h28
-rw-r--r--2.3-1/src/c/linearAlgebra/interfaces/int_svd.h31
-rw-r--r--2.3-1/src/c/linearAlgebra/pbig/pbig.c35
-rw-r--r--2.3-1/src/c/linearAlgebra/schur/zgschura.c164
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/Makefile.am70
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/Makefile.in755
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/cspeca.c34
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/dspec1a.c176
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/dspeca.c71
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/sspeca.c34
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/testDoubleSpec.c116
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/testFloatSpec.c110
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/test_DoubleSpec/testDoubleSpec.vcxproj178
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters22
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/test_FloatSpec/testFloatSpec.vcxproj178
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/test_FloatSpec/testFloatSpec.vcxproj.filters22
-rw-r--r--2.3-1/src/c/linearAlgebra/spec/zspeca.c80
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/Makefile.am70
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/Makefile.in757
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/cspec2a.c36
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/dspec2a.c113
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/sspec2a.c36
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/testDoubleSpec2.c261
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/testFloatSpec2.c134
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj178
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters22
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/test_FloatSpec2/testFloatSpec2.vcxproj178
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters22
-rw-r--r--2.3-1/src/c/linearAlgebra/spec2/zspec2a.c96
-rw-r--r--2.3-1/src/c/linearAlgebra/sva/dsvaa.c92
-rw-r--r--2.3-1/src/c/linearAlgebra/svd/dsvda.c126
-rw-r--r--2.3-1/src/c/linearAlgebra/svd/zsvda.c173
-rw-r--r--2.3-1/src/c/matrixOperations/cat/ccata.c2
-rw-r--r--2.3-1/src/c/matrixOperations/cat/zcata.c2
-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_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.c1
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_dcmotor_setup/u8cmd_dcmotor_setups.c1
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_dev/u8cmd_i2c_devs.cpp10
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_read/u8cmd_i2c_reads.cpp18
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_read_register/u8cmd_i2c_read_registers.cpp26
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_write/u8cmd_i2c_writes.cpp13
-rw-r--r--2.3-1/src/c/scilab-arduino/cmd_i2c_write_register/u8cmd_i2c_write_registers.cpp16
-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_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.h2
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_dcmotor_setup.h2
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_dev.h16
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read.h16
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read_register.h16
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write.h16
-rw-r--r--2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write_register.h16
-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_volt.h30
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_dcmotor.h9
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_dev.h17
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read.h19
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read_register.h18
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write.h20
-rw-r--r--2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write_register.h19
-rw-r--r--2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c2
-rw-r--r--2.3-1/src/c/signalProcessing/%k/dmodka.c97
-rw-r--r--2.3-1/src/c/signalProcessing/%k/int_modk.h18
-rw-r--r--2.3-1/src/c/signalProcessing/%k/modk.h29
-rw-r--r--2.3-1/src/c/signalProcessing/%sn/dmodsna.c24
-rw-r--r--2.3-1/src/c/signalProcessing/%sn/dmodsns.c93
-rw-r--r--2.3-1/src/c/signalProcessing/%sn/int_modsn.h18
-rw-r--r--2.3-1/src/c/signalProcessing/%sn/modsn.h27
-rw-r--r--2.3-1/src/c/signalProcessing/%sn/zmodsna.c24
-rw-r--r--2.3-1/src/c/signalProcessing/%sn/zmodsns.c161
-rw-r--r--2.3-1/src/c/signalProcessing/buttmag/buttmag.h28
-rw-r--r--2.3-1/src/c/signalProcessing/buttmag/dbuttmags.c33
-rw-r--r--2.3-1/src/c/signalProcessing/buttmag/int_buttmag.h18
-rw-r--r--2.3-1/src/c/signalProcessing/buttmag/u8buttmags.c33
-rw-r--r--2.3-1/src/c/signalProcessing/cheb1mag/cheb1mag.h27
-rw-r--r--2.3-1/src/c/signalProcessing/cheb1mag/dcheb1mags.c35
-rw-r--r--2.3-1/src/c/signalProcessing/cheb1mag/int_cheb1mag.h18
-rw-r--r--2.3-1/src/c/signalProcessing/cheb2mag/cheb2mag.h27
-rw-r--r--2.3-1/src/c/signalProcessing/cheb2mag/dcheb2mags.c49
-rw-r--r--2.3-1/src/c/signalProcessing/cheb2mag/int_cheb2mag.h18
-rw-r--r--2.3-1/src/c/signalProcessing/ffilt/ffilt.h27
-rw-r--r--2.3-1/src/c/signalProcessing/ffilt/gffilts.c90
-rw-r--r--2.3-1/src/c/signalProcessing/ffilt/int_ffilt.h18
-rw-r--r--2.3-1/src/c/signalProcessing/filt_sinc/dfilt_sincs.c58
-rw-r--r--2.3-1/src/c/signalProcessing/filt_sinc/filt_sinc.h28
-rw-r--r--2.3-1/src/c/signalProcessing/filt_sinc/int_filt_sinc.h18
-rw-r--r--2.3-1/src/c/signalProcessing/fsfirlin/dfsfirlina.c144
-rw-r--r--2.3-1/src/c/signalProcessing/fsfirlin/fsfirlin.h26
-rw-r--r--2.3-1/src/c/signalProcessing/fsfirlin/int_fsfirlin.h18
-rw-r--r--2.3-1/src/c/signalProcessing/includes/buttmag.h29
-rw-r--r--2.3-1/src/c/signalProcessing/includes/cheb1mag.h27
-rw-r--r--2.3-1/src/c/signalProcessing/includes/cheb2mag.h27
-rw-r--r--2.3-1/src/c/signalProcessing/includes/dct.h38
-rw-r--r--2.3-1/src/c/signalProcessing/includes/ffilt.h27
-rw-r--r--2.3-1/src/c/signalProcessing/includes/filt_sinc.h28
-rw-r--r--2.3-1/src/c/signalProcessing/includes/fsfirlin.h28
-rw-r--r--2.3-1/src/c/signalProcessing/includes/idct.h38
-rw-r--r--2.3-1/src/c/signalProcessing/includes/modk.h28
-rw-r--r--2.3-1/src/c/signalProcessing/includes/modsn.h31
-rw-r--r--2.3-1/src/c/signalProcessing/includes/sincd.h29
-rw-r--r--2.3-1/src/c/signalProcessing/includes/zpbutt.h29
-rw-r--r--2.3-1/src/c/signalProcessing/includes/zpch1.h28
-rw-r--r--2.3-1/src/c/signalProcessing/includes/zpch2.h28
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_buttmag.h19
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_cheb1mag.h18
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_cheb2mag.h18
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_dct.h36
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_ffilt.h18
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_filt_sinc.h18
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_fsfirlin.h18
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_idct.h28
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_modk.h18
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_modsn.h21
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_sincd.h19
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_zpbutt.h19
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_zpch1.h18
-rw-r--r--2.3-1/src/c/signalProcessing/interfaces/int_zpch2.h18
-rw-r--r--2.3-1/src/c/signalProcessing/modk/dmodka.c97
-rw-r--r--2.3-1/src/c/signalProcessing/sincd/dsincds.c99
-rw-r--r--2.3-1/src/c/signalProcessing/sincd/int_sincd.h18
-rw-r--r--2.3-1/src/c/signalProcessing/sincd/sincd.h28
-rw-r--r--2.3-1/src/c/signalProcessing/sincd/u8sincds.c98
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/dct/cdcta.c177
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/dct/ddcta.c160
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/dct/sdcta.c160
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/dct/zdcta.c177
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/idct/cidcta.c97
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/idct/didcta.c83
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/idct/sidcta.c83
-rw-r--r--2.3-1/src/c/signalProcessing/transforms/idct/zidcta.c97
-rw-r--r--2.3-1/src/c/signalProcessing/zpbutt/dzpbutts.c33
-rw-r--r--2.3-1/src/c/signalProcessing/zpbutt/int_zpbutt.h19
-rw-r--r--2.3-1/src/c/signalProcessing/zpbutt/zpbutt.h27
-rw-r--r--2.3-1/src/c/signalProcessing/zpch1/dzpch1s.c53
-rw-r--r--2.3-1/src/c/signalProcessing/zpch1/int_zpch1.h18
-rw-r--r--2.3-1/src/c/signalProcessing/zpch1/zpch1.h28
-rw-r--r--2.3-1/src/c/signalProcessing/zpch2/dzpch2s.c63
-rw-r--r--2.3-1/src/c/signalProcessing/zpch2/int_zpch2.h18
-rw-r--r--2.3-1/src/c/signalProcessing/zpch2/zpch2.h28
-rw-r--r--2.3-1/src/c/string/ascii/dasciia.c21
-rw-r--r--2.3-1/src/c/string/ascii/gasciia.c26
-rw-r--r--2.3-1/src/c/string/disp/zdispa.c2
-rw-r--r--2.3-1/src/c/string/includes/ascii.h27
-rw-r--r--2.3-1/src/c/string/includes/strchr.h25
-rw-r--r--2.3-1/src/c/string/includes/strcspn.h26
-rw-r--r--2.3-1/src/c/string/includes/strncpy.h25
-rw-r--r--2.3-1/src/c/string/includes/strspn.h26
-rw-r--r--2.3-1/src/c/string/interfaces/int_ascii.h26
-rw-r--r--2.3-1/src/c/string/interfaces/int_strchr.h25
-rw-r--r--2.3-1/src/c/string/interfaces/int_strcspn.h25
-rw-r--r--2.3-1/src/c/string/interfaces/int_strncpy.h26
-rw-r--r--2.3-1/src/c/string/interfaces/int_strspn.h25
-rw-r--r--2.3-1/src/c/string/strchr/gstrchra.c33
-rw-r--r--2.3-1/src/c/string/strcspn/gstrcspna.c49
-rw-r--r--2.3-1/src/c/string/strncpy/gstrncpya.c25
-rw-r--r--2.3-1/src/c/string/strspn/gstrspna.c44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_blas.h602
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_blas_types.h54
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block.h24
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_char.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_double.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_float.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_long_double.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_double.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_float.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_int.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long_double.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_short.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uchar.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uint.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ulong.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ushort.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_bspline.h122
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_cblas.h606
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_cdf.h170
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_chebyshev.h133
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_check_range.h57
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_combination.h92
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_complex.h103
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_complex_math.h142
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_const.h31
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgs.h116
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgsm.h122
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mks.h126
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mksa.h126
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_const_num.h43
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_deriv.h50
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex.h55
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex_float.h55
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_dht.h87
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_diff.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_eigen.h347
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_errno.h154
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fft.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex.h136
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex_float.h139
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex.h86
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex_float.h86
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real_float.h79
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_fit.h85
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_heapsort.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram.h134
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram2d.h172
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_ieee_utils.h99
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_inline.h67
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_integration.h323
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_interp.h225
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_interp2d.h160
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_linalg.h650
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_machine.h104
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_math.h164
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix.h25
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_char.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_double.h351
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_float.h351
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_long_double.h351
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_double.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_float.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_int.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long_double.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_short.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uchar.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uint.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ulong.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ushort.h350
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_message.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_min.h111
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_minmax.h102
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_mode.h88
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_monte.h55
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_miser.h97
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_plain.h65
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_vegas.h125
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit.h319
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit_nlin.h275
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_multilarge.h141
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_multimin.h226
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_multiroots.h177
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_multiset.h93
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_nan.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_ntuple.h82
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv2.h333
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permutation.h100
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute.h24
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_char.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_double.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_float.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_long_double.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_double.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_float.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_int.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long_double.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_short.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uchar.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uint.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ulong.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ushort.h44
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector.h24
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_char.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_double.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_float.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_long_double.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_double.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_float.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_int.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long_double.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_short.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uchar.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uint.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ulong.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ushort.h45
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_poly.h183
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_pow_int.h61
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_precision.h66
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_qrng.h111
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_randist.h185
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_rng.h217
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_roots.h127
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_rstat.h79
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf.h39
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_airy.h139
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_bessel.h549
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_clausen.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coulomb.h128
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coupling.h125
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dawson.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_debye.h91
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dilog.h130
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elementary.h57
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_ellint.h112
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elljac.h48
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_erf.h91
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_exp.h134
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_expint.h167
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_fermi_dirac.h126
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gamma.h293
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gegenbauer.h73
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_hyperg.h154
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_laguerre.h68
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_lambert.h69
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_legendre.h375
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_log.h82
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_mathieu.h113
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_pow_int.h49
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_psi.h113
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_result.h59
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_synchrotron.h60
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_transport.h78
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_trig.h152
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_zeta.h112
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_siman.h82
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort.h20
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_char.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_double.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_float.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_int.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long_double.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_short.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uchar.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uint.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ulong.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ushort.h51
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector.h20
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_char.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_double.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_float.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_int.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long_double.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_short.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uchar.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uint.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ulong.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ushort.h52
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_spblas.h58
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_specfunc.h10
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_splinalg.h79
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_spline.h101
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_spline2d.h113
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_spmatrix.h150
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics.h20
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_char.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_double.h100
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_float.h100
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_int.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long_double.h100
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_short.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uchar.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uint.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ulong.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ushort.h80
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sum.h162
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_sys.h63
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_test.h66
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_types.h41
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector.h25
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_char.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex.h17
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_double.h251
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_float.h251
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_long_double.h251
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_double.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_float.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_int.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long_double.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_short.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uchar.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uint.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ulong.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ushort.h230
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_version.h26
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet.h100
-rw-r--r--2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet2d.h107
506 files changed, 41230 insertions, 190 deletions
diff --git a/2.3-1/includes/lapack.h b/2.3-1/includes/lapack.h
index ba568ce4..5f12bc25 100644
--- a/2.3-1/includes/lapack.h
+++ b/2.3-1/includes/lapack.h
@@ -186,6 +186,15 @@ 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*);
+/*Used in SVD */
+extern double dgesvd_(char*,char*,int*,int*,double*,int*,double*,double*,int*,\
+ double*,int*,double *,int*,int*);
+
+/* Used in svd complex */
+extern doubleComplex zgesvd_( char* , char* , int* , int* ,doubleComplex *,\
+ int* , double* ,doubleComplex* , int* ,doubleComplex* , int* ,\
+ doubleComplex* , int* , double* , int* );
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/2.3-1/includes/sci2clib.h b/2.3-1/includes/sci2clib.h
index 4973fbee..5f023118 100644
--- a/2.3-1/includes/sci2clib.h
+++ b/2.3-1/includes/sci2clib.h
@@ -65,8 +65,22 @@ extern "C" {
#include "rand.h"
#include "int_rand.h"
+/* INTERPOLATION FUNCTIONS*/
+
+/*interfacing interp1*/
+#include "interp1.h"
+#include "int_interp1.h"
+
/* ELEMENTARY FUNCTIONS */
+#include "nextpow2.h"
+#include "int_nextpow2.h"
+/*interfacing gcd*/
+#include "gcd.h"
+#include "int_gcd.h"
+/* interfacing isreal*/
+#include "isreal.h"
+#include "int_isreal.h"
/* interfacing atand */
#include "atand.h"
#include "int_atand.h"
@@ -310,6 +324,15 @@ extern "C" {
#include "factor.h"
#include "int_factor.h"
+/*interfacing gcd*/
+#include "gcd.h"
+#include "int_gcd.h"
+
+/*interfacing lcm*/
+#include "lcm.h"
+#include "int_lcm.h"
+
+
/* IMPLICIT LISTS */
/* interfacing implicitList/OpColon */
#include "implicitList.h"
@@ -379,7 +402,7 @@ extern "C" {
/* interfacing ones */
#include "ones.h"
#include "int_ones.h"
-/* interfacing spec */
+/* Linear Algebra - spec */
#include "spec.h"
#include "int_spec.h"
/* interfacing trace */
@@ -418,6 +441,18 @@ extern "C" {
#include "norm.h"
/* SIGNAL PROCESSING */
+
+
+#include "modk.h"
+#include "int_modk.h"
+/* interfacing idct */
+#include "idct.h"
+#include "int_idct.h"
+
+/* interfacing dct */
+#include "dct.h"
+#include "int_dct.h"
+
/* interfacing convol */
#include "conv.h"
#include "conv2d.h"
@@ -437,7 +472,57 @@ extern "C" {
#include "lev.h"
#include "int_lev.h"
+/* interfacing zpbutt */
+#include "zpbutt.h"
+#include "int_zpbutt.h"
+
+/*interfacing zpch1 */
+#include "zpch1.h"
+#include "int_zpch1.h"
+
+/*interfacing zpch2 */
+#include "zpch2.h"
+#include "int_zpch2.h"
+
+/*interfacing buttmag */
+#include "buttmag.h"
+#include "int_buttmag.h"
+
+/*interfacing cheb1mag */
+#include "cheb1mag.h"
+#include "int_cheb1mag.h"
+
+/*interfacing cheb2mag */
+#include "cheb2mag.h"
+#include "int_cheb2mag.h"
+
+/*interfacing sinc */
+#include "sinc.h"
+#include "int_sinc.h"
+/*interfacing sincd */
+#include "sincd.h"
+#include "int_sincd.h"
+
+/*interfacing fsfirlin */
+#include "fsfirlin.h"
+#include "int_fsfirlin.h"
+
+/*interfacing %k */
+#include "modk.h"
+#include "int_modk.h"
+
+/*interfacing filt_sinc */
+#include "filt_sinc.h"
+#include "int_filt_sinc.h"
+
+/*interfacing ffilt */
+#include "ffilt.h"
+#include "int_ffilt.h"
+
+/*interfacing modsn */
+#include "modsn.h"
+#include "int_modsn.h"
/* STATISTICS FUNCTIONS */
@@ -506,6 +591,26 @@ extern "C" {
#include "strrchr.h"
#include "int_strrchr.h"
+/*interfacing strchr*/
+#include "strchr.h"
+#include "int_strchr.h"
+
+/*interfacing ascii*/
+#include "ascii.h"
+#include "int_ascii.h"
+
+/*interfacing strspn*/
+#include "strspn.h"
+#include "int_strspn.h"
+
+/*interfacing strcspn*/
+#include "strcspn.h"
+#include "int_strcspn.h"
+
+/*interfacing strncpy*/
+#include "strncpy.h"
+#include "int_strncpy.h"
+
/*Functions related to strings*/
#include "convstr.h"
#include "int_convstr.h"
@@ -529,8 +634,17 @@ extern "C" {
#include "balanc.h"
#include "int_balanc.h"
+#include "svd.h" /*Linear Alegbra - Singular value decompostion */
+#include "int_svd.h"
+
#include "rcond.h"
#include "int_rcond.h"
+
+#include "hess.h" /* Linear Algebra - Hess function */
+#include "int_hess.h"
+
+#include "sva.h"
+#include "int_sva.h" /*Linear Algebra - SVA function */
/*Functions related to opencv*/
/*#include "cvcore.hpp"
@@ -553,8 +667,24 @@ extern "C" {
#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"
diff --git a/2.3-1/libraries/blasplus.lib b/2.3-1/libraries/blasplus.lib
new file mode 100644
index 00000000..df511369
--- /dev/null
+++ b/2.3-1/libraries/blasplus.lib
Binary files differ
diff --git a/2.3-1/libraries/lapack.lib b/2.3-1/libraries/lapack.lib
new file mode 100644
index 00000000..305c5a8e
--- /dev/null
+++ b/2.3-1/libraries/lapack.lib
Binary files differ
diff --git a/2.3-1/macros/ASTManagement/%equal_string.sci b/2.3-1/macros/ASTManagement/%equal_string.sci
index 9678f0e0..041fb84a 100644
--- a/2.3-1/macros/ASTManagement/%equal_string.sci
+++ b/2.3-1/macros/ASTManagement/%equal_string.sci
@@ -13,4 +13,4 @@ function txt=%equal_string(e)
' '+objectlist2string(e.lhs)
'EndEqual'
]
-endfunction \ No newline at end of file
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%funcall_string.sci b/2.3-1/macros/ASTManagement/%funcall_string.sci
index faeb81d9..0ee97016 100644
--- a/2.3-1/macros/ASTManagement/%funcall_string.sci
+++ b/2.3-1/macros/ASTManagement/%funcall_string.sci
@@ -6,10 +6,19 @@ function txt=%funcall_string(F)
// name : string, the name of the function
// lhsnb: number, the number of function lhs
+if F.name <> 'disp'
txt=['Funcall : '+F.name
' #lhs : '+string(F.lhsnb)
' Rhs : '
' '+objectlist2string(F.rhs)
'EndFuncall'
]
+else
+txt=['Funcall : '+F.name
+ ' #lhs : '+'0'
+ ' Rhs : '
+ ' '+objectlist2string(F.rhs)
+ 'EndFuncall'
+ ]
+end
endfunction
diff --git a/2.3-1/macros/ASTManagement/%operatio_string.sci b/2.3-1/macros/ASTManagement/%operatio_string.sci
index 8421a3f4..cc18e919 100644
--- a/2.3-1/macros/ASTManagement/%operatio_string.sci
+++ b/2.3-1/macros/ASTManagement/%operatio_string.sci
@@ -4,10 +4,22 @@ function txt=%operatio_string(O)
//fields:
// operands: a list
// operator: a string
+if O.operator <> 'rc' & O.operator <> 'cc'
txt=['Operation'
' Operands:'
' '+objectlist2string(O.operands)
' Operator: '+O.operator
'EndOperation'
]
-endfunction \ No newline at end of file
+elseif O.operator == 'rc'
+ txt=[' Operands:'
+ ' '+objectlist2string(O.operands)
+ 'Endrc'
+ ]
+elseif O.operator == 'cc'
+ txt=[' Begin:'
+ ' '+objectlist2string(O.operands)
+ 'Endcc'
+ ]
+end
+endfunction
diff --git a/2.3-1/macros/ASTManagement/%operation_string.sci b/2.3-1/macros/ASTManagement/%operation_string.sci
index 84f5ce3c..c9282f67 100644
--- a/2.3-1/macros/ASTManagement/%operation_string.sci
+++ b/2.3-1/macros/ASTManagement/%operation_string.sci
@@ -10,4 +10,4 @@ function txt=%operation_string(O)
' Operator: '+O.operator
'EndOperation'
]
-endfunction \ No newline at end of file
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST2Ccode.sci b/2.3-1/macros/ASTManagement/AST2Ccode.sci
index 8076d7e2..563f3133 100644
--- a/2.3-1/macros/ASTManagement/AST2Ccode.sci
+++ b/2.3-1/macros/ASTManagement/AST2Ccode.sci
@@ -46,6 +46,13 @@ ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
// ---------------------------------
// --- Parameter Initialization. ---
// ---------------------------------
+
+global cc_count
+cc_count = 0;
+
+global rc_count
+rc_count = 0;
+
global SCI2CSTACK
SCI2CSTACK = ['EMPTYSTACK'];
@@ -54,6 +61,9 @@ StackPosition = 1;
global STACKDEDUG
STACKDEDUG = 0; // 1 -> Every Pop and Push operation on the stack, the stack content will be printed on screen.
+
+global disp_isthere
+disp_isthere = 0;
// -------------------------------------
// --- End parameter Initialization. ---
// -------------------------------------
@@ -132,9 +142,10 @@ while ~meof(fidAST)
//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');
+ [disp_isthere,FileInfo,SharedInfo] = AST_HandleEndGenFun(disp_isthere,FileInfo,SharedInfo,'Operation');
case 'EndFuncall' then
- [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,'Funcall');
+ [disp_isthere,FileInfo,SharedInfo] = AST_HandleEndGenFun(disp_isthere,FileInfo,SharedInfo,'Funcall');
+ disp(disp_isthere);
// --------------
// --- Equal. ---
@@ -144,25 +155,60 @@ while ~meof(fidAST)
//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);
+ if rc_count > 0 & cc_count == 0
+ [FileInfo,SharedInfo] = AST_HandleFunRC(FileInfo,SharedInfo);
+ rc_count = 0;
+ elseif cc_count > 0
+ [FileInfo,SharedInfo] = AST_HandleFunCC(cc_count,FileInfo,SharedInfo);
+ rc_count = 0;
+ cc_count = 0;
+ else
+ if disp_isthere == 0
+ [disp_isthere,FileInfo,SharedInfo] = AST_HandleEndGenFun(disp_isthere,FileInfo,SharedInfo,'Equal');
+ SharedInfo = INIT_SharedInfoEqual(SharedInfo);
+ end
+ end
+ disp_isthere = 0;
+
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);
+ disp(disp_isthere);
+ if rc_count > 0 & cc_count == 0
+ SharedInfo.Equal.Lhs = 1;
+ [EqualInArgName,EqualInArgScope,EqualNInArg] = AST_HandleRC(FileInfo,SharedInfo);
+ SharedInfo.Equal.NInArg = EqualNInArg - rc_count -1;
+ AST_PushASTStack(treeline);
+ for tmpcnt = 1:SharedInfo.Equal.NInArg
+ SharedInfo.Equal.InArg(tmpcnt).Name = EqualInArgName(tmpcnt);
+ SharedInfo.Equal.InArg(tmpcnt).Scope = EqualInArgScope(tmpcnt);
+ end
+ elseif cc_count > 0
+ SharedInfo.Equal.Lhs = 1;
+ [EqualInArgName,EqualInArgScope,EqualNInArg] = AST_HandleCC(FileInfo,SharedInfo);
+ AST_PushASTStack(treeline);
+ else
+ SharedInfo.Equal.Lhs = 1; // 1 means that we are inside the Lhs block of the Equal
+ //if SharedInfo.Equal.NOutArg > 0
+ if disp_isthere == 0
+ [EqualInArgName,EqualInArgScope,EqualNInArg] = AST_ReadEqualRhsNames(FileInfo,SharedInfo);
+ SharedInfo.Equal.NInArg = EqualNInArg;
+ //end
+
+ // lengthNumber = length('Number_');
+ // if (part(EqualInArgScope,1:lengthNumber) == 'Number_')
+ // SharedInfo.SkipNextEqual = 1
+ // end
+
+ for tmpcnt = 1:SharedInfo.Equal.NInArg
+ SharedInfo.Equal.InArg(tmpcnt).Name = EqualInArgName(tmpcnt);
+ SharedInfo.Equal.InArg(tmpcnt).Scope = EqualInArgScope(tmpcnt);
+ end
+ //end
+ end
+ AST_PushASTStack(treeline);
+ end
// ----------------
// --- If/Else. ---
@@ -196,6 +242,7 @@ while ~meof(fidAST)
// -----------------
case 'EndProgram'
SharedInfo = AST_HandleEndProgram(FileInfo,SharedInfo);
+ disp_isthere = 0;
//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
@@ -229,6 +276,15 @@ while ~meof(fidAST)
SharedInfo = AST_HandleEndWhile(FileInfo,SharedInfo);
SharedInfo.While.Level = SharedInfo.While.Level - 1;
+
+ case 'Endrc' then
+ rc_count = rc_count + 1;
+
+ case 'Endcc' then
+ cc_count = cc_count + 1;
+
+ //[FileInfo,SharedInfo] = AST_HandleRC(FileInfo,SharedInfo);
+
// ----------------
// --- Default. ---
// ----------------
diff --git a/2.3-1/macros/ASTManagement/AST_HandleCC.sci b/2.3-1/macros/ASTManagement/AST_HandleCC.sci
new file mode 100644
index 00000000..cc411549
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleCC.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
+// Author: Ukasha Noor
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function [RhsNames,RhsScope,NRhs] = AST_HandleCC(FileInfo,SharedInfo)
+
+SCI2CNInArgCheck(argn(2),2,2)
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+// ------------------------------
+// --- Read input parameters. ---
+// ------------------------------
+cntpop = 1;
+NRhs = 0;
+RhsField(cntpop) = AST_PopASTStack();
+RhsNames = [];
+while (RhsField(cntpop) ~= 'Expression:')
+ if RhsField(cntpop) <> 'Operands:' & RhsField(cntpop) <> 'Begin:'
+ NRhs = NRhs + 1;
+
+ [RhsNames(NRhs),RhsScope(NRhs)] = AST_ExtractNameAndScope(RhsField(cntpop));
+ end
+ cntpop = cntpop + 1;
+ RhsField(cntpop) = AST_PopASTStack();
+end
+RhsNames = SCI2Cflipud(RhsNames);
+RhsScope = SCI2Cflipud(RhsScope);
+
+// --- Repush everything into the stack. ---
+for cntpush = cntpop:-1:1
+ if RhsField(cntpush) <> 'Operands:' & RhsField(cntpush) <> 'Begin:'
+ PrintStringInfo(' ' + RhsField(cntpush),ReportFileName,'file','y');
+ AST_PushASTStack(RhsField(cntpush));
+ end
+end
+
+
+//for counterinputargs = 1:NRhs
+ //#RNU_RES_B
+ //disp(counterinputargs);
+ //PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+RhsNames(counterinputargs).Name,...
+ // ReportFileName,'file','y');
+ //PrintStringInfo(' Scope: '+RhsNames(counterinputargs).Scope,...
+ // ReportFileName,'file','y');
+ //#RNU_RES_E
+//end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci
index 26d6cb13..96830aa9 100644
--- a/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci
+++ b/2.3-1/macros/ASTManagement/AST_HandleEndGenFun.sci
@@ -1,5 +1,5 @@
-function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType)
+function [disp_isthere,FileInfo,SharedInfo] = AST_HandleEndGenFun(disp_isthere,FileInfo,SharedInfo,ASTFunType)
// function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunType)
// -----------------------------------------------------------------
// #RNU_RES_B
@@ -36,7 +36,7 @@ function [FileInfo,SharedInfo] = AST_HandleEndGenFun(FileInfo,SharedInfo,ASTFunT
// ------------------------------
// --- Check input arguments. ---
// ------------------------------
-SCI2CNInArgCheck(argn(2),3,3);
+SCI2CNInArgCheck(argn(2),4,4);
// -----------------------
// --- Initialization. ---
@@ -61,6 +61,8 @@ PrintStepInfo('Handling Funcall/Operation/Equal',FileInfo.Funct(nxtscifunnumber)
global SCI2CSTACK
global StackPosition;
global STACKDEDUG
+
+disp_isthere = 0;
// ---------------------------
// --- End Initialization. ---
// ---------------------------
@@ -73,6 +75,19 @@ global STACKDEDUG
// #RNU_RES_E
[ASTFunName,InArg,NInArg,OutArg,NOutArg] = AST_GetFuncallPrm(FileInfo,SharedInfo,ASTFunType);
NOutArg_mod = NOutArg
+ if ASTFunName == 'OpLogAnd'
+ AST_PushASTStack('&&');
+ return ;
+ end
+ if ASTFunName == 'OpLogOr'
+ AST_PushASTStack('||');
+ return;
+ end
+
+ if ASTFunName == 'disp'
+ disp_isthere = 1;
+ end
+
if(mtlb_strcmp(part(ASTFunName,1:2),'CV') == %T)
SharedInfo.OpenCVUsed = %T;
end
@@ -121,6 +136,13 @@ NOutArg_mod = NOutArg
// --- Read the function annotations. ---
// --------------------------------------
// #RNU_RES_E
+ if ASTFunName == '%k'
+ ASTFunName='modk';
+ end
+
+ if ASTFunName == '%sn'
+ ASTFunName='modsn';
+ end
if (ASTFunName == 'OpEqual')
FunTypeAnnot = '';
@@ -134,6 +156,7 @@ NOutArg_mod = NOutArg
// --- Search for Equal Lhs and precision specifier to be applied to the current function. ---
// -------------------------------------------------------------------------------------------
// #RNU_RES_E
+ PrintStringInfo(' no of out arguments' + string(NOutArg),ReportFileName,'file','y');
[LhsArg,NLhsArg,FunPrecSpecifier,SharedInfo] = AST_GetPrecAndLhsArg(OutArg,NOutArg,ASTFunName,FunTypeAnnot,FunSizeAnnot,ASTFunType,FileInfo,SharedInfo);
//NUT: questa funzione contiene troppi parametri e mi sembra disordinata.
@@ -331,8 +354,13 @@ NOutArg_mod = NOutArg
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);
+ //elseif ASTFunName == 'disp'
else
[OutArg,SharedInfo] = GenOutArgNames(ASTFunName,InArg,NInArg,OutArg,NOutArg,LhsArg,NLhsArg,FileInfo,SharedInfo);
+ if ( ASTFunName == 'OpLogGt' | ASTFunName == 'OpLogLt' | ASTFunName == 'OpLogLe' | ASTFunName == 'OpLogGe' | ASTFunName == 'OpLogNe' | ASTFunName == 'OpLogEq')
+ PrintStringInfo(' returning back due logical function',ReportFileName,'file','y');
+ return;
+ end
end
if ((ASTFunName == 'uint8') & (NInArg == 1) & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
@@ -376,6 +404,8 @@ NOutArg_mod = NOutArg
// Scope already set above.
elseif (ASTFunName == 'double' & NInArg == 1 & (InArg(1).Dimension == 0) & (InArg(1).Scope == 'Number'))
// Scope already set above.
+ //elseif ASTFunName == 'disp'
+ //do nothing
else
OutArg = ST_AnalyzeScope(OutArg,NOutArg,FileInfo,SharedInfo);
end
@@ -394,6 +424,8 @@ NOutArg_mod = NOutArg
//#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.
+ //elseif ASTFunName == 'disp'
+ //do nothing
else
ST_InsOutArg(OutArg,NOutArg,FileInfo,SharedInfo,'all');
end
@@ -426,8 +458,10 @@ NOutArg_mod = NOutArg
// --------------------------------------------
//#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))
@@ -451,7 +485,8 @@ NOutArg_mod = NOutArg
else
LibTypeInfo = 'USER2C';
end
-
+
+
//#RNU_RES_B
// ------------------------------------------------------------------------------------
// --- Check whether the function has been already called in the current .sci file. ---
@@ -498,6 +533,8 @@ NOutArg_mod = NOutArg
SharedInfo.SkipNextFun > 0 | ...
((sum(mtlb_strcmp(ASTFunName,SharedInfo.Annotations.DataPrec)) > 0) & (SharedInfo.SkipNextPrec == 1)))
// Do nothing
+ //elseif ASTFunName == 'disp'
+ // Do nothing
else
AST_CheckCommonInOutArgs(InArg,NInArg,OutArg,NOutArg,ReportFileName);
end
diff --git a/2.3-1/macros/ASTManagement/AST_HandleFunCC.sci b/2.3-1/macros/ASTManagement/AST_HandleFunCC.sci
new file mode 100644
index 00000000..1942c749
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleFunCC.sci
@@ -0,0 +1,176 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// Author: Ukasha Noor
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+
+function [FileInfo,SharedInfo] = AST_HandleFunCC(NCol,FileInfo,SharedInfo)
+
+SCI2CNInArgCheck(argn(2),3,3)
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ------------------------------
+// --- 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
+
+// ------------------------------
+// --- Read input parameters. ---
+// ------------------------------
+
+
+RhsField = AST_PopASTStack();
+InputArgumentNames = [];
+InputArgumentScope = [];
+NInArg = 0;
+InArg = [];
+while (RhsField ~= 'Expression:')
+ NInArg = NInArg + 1;
+ if RhsField <> 'Operands:'
+ [InputArgumentNames(NInArg),InputArgumentScope(NInArg)] = AST_ExtractNameAndScope(RhsField);
+ end
+ //InArg(NInArg) = RhsField;
+ RhsField = AST_PopASTStack();
+end
+InputArgumentNames = SCI2Cflipud(InputArgumentNames);
+InputArgumentScope = SCI2Cflipud(InputArgumentScope);
+
+
+// -------------------------------------
+// --- Generate the InArg structure. ---
+// -------------------------------------
+//#RNU_RES_E
+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. ---
+// ------------------------
+
+PrintStringInfo('N Input Arguments: '+string(NInArg),ReportFileName,'file','y','n');
+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
+
+NOutArg_mod = NOutArg;
+
+FunTypeAnnot = '';
+FunSizeAnnot = '';
+NLhsArg = 0;
+LhsArg = [];
+PrintStringInfo('...Equal not found.',ReportFileName,'file','y');
+
+PrintStringInfo('***Analyzing Input Arguments***',ReportFileName,'file','y');
+UpdatedInArg = InArg;
+[InArg,SharedInfo] = ST_GetInArgInfo(InArg,NInArg,FileInfo,SharedInfo,'OpEqual');
+
+NCol = NCol + 1;
+NRow = NInArg/NCol;
+
+com_type = 0;
+for i = 1:NInArg
+ if InArg(i).Type == 'z'
+ com_type = 1;
+ elseif InArg(i).Type == 'c'
+ com_type = 2;
+ end
+end
+
+
+if com_type == 0
+ PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
+ OutArg(1).Type = InArg(1).Type;
+ OutArg(1).Size(1) = string(NCol);
+ OutArg(1).Size(2) = string(NRow);
+ OutArg(1).Dimension = 2;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+elseif com_type == 1
+ PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
+ OutArg(1).Type = 'z';
+ OutArg(1).Size(1) = string(NCol);
+ OutArg(1).Size(2) = string(NRow);
+ OutArg(1).Dimension = 2;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+else
+ PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
+ OutArg(1).Type = 'c';
+ OutArg(1).Size(1) = string(NCol);
+ OutArg(1).Size(2) = string(NRow);
+ OutArg(1).Dimension = 2;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+end
+
+//--- Check for output Argument in symbol table ---//
+OutArg = ST_AnalyzeScope(OutArg,NOutArg,FileInfo,SharedInfo);
+
+//--- Put the output Argument in symbol table ---//
+ST_InsOutArg_Dup(InArg,NInArg,OutArg,NOutArg,com_type,FileInfo,SharedInfo,'all');
+
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleFunRC.sci b/2.3-1/macros/ASTManagement/AST_HandleFunRC.sci
new file mode 100644
index 00000000..d3169249
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleFunRC.sci
@@ -0,0 +1,178 @@
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// Author: Ukasha Noor
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+
+function [FileInfo,SharedInfo] = AST_HandleFunRC(FileInfo,SharedInfo)
+
+SCI2CNInArgCheck(argn(2),2,2)
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+
+// -----------------------
+// --- Initialization. ---
+// -----------------------
+nxtscifunname = SharedInfo.NextSCIFunName;
+nxtscifunnumber = SharedInfo.NextSCIFunNumber;
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+// ------------------------------
+// --- 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
+
+// ------------------------------
+// --- Read input parameters. ---
+// ------------------------------
+
+
+RhsField = AST_PopASTStack();
+InputArgumentNames = [];
+InputArgumentScope = [];
+NInArg = 0;
+InArg = [];
+while (RhsField ~= 'Expression:')
+ NInArg = NInArg + 1;
+ if RhsField <> 'Operands:'
+ [InputArgumentNames(NInArg),InputArgumentScope(NInArg)] = AST_ExtractNameAndScope(RhsField);
+ end
+ //InArg(NInArg) = RhsField;
+ RhsField = AST_PopASTStack();
+end
+InputArgumentNames = SCI2Cflipud(InputArgumentNames);
+InputArgumentScope = SCI2Cflipud(InputArgumentScope);
+
+
+// -------------------------------------
+// --- Generate the InArg structure. ---
+// -------------------------------------
+//#RNU_RES_E
+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. ---
+// ------------------------
+
+PrintStringInfo('N Input Arguments: '+string(NInArg),ReportFileName,'file','y','n');
+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
+
+NOutArg_mod = NOutArg;
+
+FunTypeAnnot = '';
+FunSizeAnnot = '';
+NLhsArg = 0;
+LhsArg = [];
+PrintStringInfo('...Equal not found.',ReportFileName,'file','y');
+
+PrintStringInfo('***Analyzing Input Arguments***',ReportFileName,'file','y');
+UpdatedInArg = InArg;
+[InArg,SharedInfo] = ST_GetInArgInfo(InArg,NInArg,FileInfo,SharedInfo,'OpEqual');
+
+size_count = 0;
+for i = 1:NInArg
+ size_count = size_count + eval(InArg(i).Size(2));
+end
+
+com_type = 0;
+for i = 1:NInArg
+ if InArg(i).Type == 'z'
+ com_type = 1;
+ elseif InArg(i).Type == 'c'
+ com_type = 2;
+ end
+end
+
+
+if com_type == 0
+ PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
+ OutArg(1).Type = InArg(1).Type;
+ OutArg(1).Size(1) = '1'
+ OutArg(1).Size(2) = string(size_count);
+ OutArg(1).Dimension = 2;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+elseif com_type == 1
+ PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
+ OutArg(1).Type = 'z';
+ OutArg(1).Size(1) = '1'
+ OutArg(1).Size(2) = string(size_count);
+ OutArg(1).Dimension = 2;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+else
+ PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
+ OutArg(1).Type = 'c';
+ OutArg(1).Size(1) = '1'
+ OutArg(1).Size(2) = string(size_count);
+ OutArg(1).Dimension = 2;
+ OutArg(1).Value = InArg(1).Value;
+ OutArg(1).FindLike = InArg(1).FindLike;
+end
+
+//--- Check for output Argument in symbol table ---//
+OutArg = ST_AnalyzeScope(OutArg,NOutArg,FileInfo,SharedInfo);
+
+//--- Put the output Argument in symbol table ---//
+ST_InsOutArg_Dup(InArg,NInArg,OutArg,NOutArg,com_type,FileInfo,SharedInfo,'all');
+
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleIfElse.sci b/2.3-1/macros/ASTManagement/AST_HandleIfElse.sci
index 5373adf6..2b549ed6 100644
--- a/2.3-1/macros/ASTManagement/AST_HandleIfElse.sci
+++ b/2.3-1/macros/ASTManagement/AST_HandleIfElse.sci
@@ -74,11 +74,13 @@ global STACKDEDUG
// ---------------------------------------------------
//#RNU_RES_E
if (ASTIfExpType~='else')
- [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType);
+ [IfCondArg,NIfCondArg,Op,NOp] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType);
else
// "else" type doesn't contain any condition to test.
IfCondArg = '';
NIfCondArg = 0;
+ Op = '';
+ NOp = 0;
end
//#RNU_RES_B
@@ -87,6 +89,6 @@ end
// -----------------------------
// --- Generate the C code for if/elseif Expression. ---
//#RNU_RES_E
-SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,SharedInfo);
+SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,Op,NOp,ASTIfExpType,FileInfo,SharedInfo);
endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleRC.sci b/2.3-1/macros/ASTManagement/AST_HandleRC.sci
new file mode 100644
index 00000000..2a6cbc3f
--- /dev/null
+++ b/2.3-1/macros/ASTManagement/AST_HandleRC.sci
@@ -0,0 +1,88 @@
+function [RhsNames,RhsScope,NRhs] = AST_HandleRC(FileInfo,SharedInfo)
+// 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
+// -----------------------------------------------------------------
+
+SCI2CNInArgCheck(argn(2),2,2)
+
+ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+// ------------------------------
+// --- Check input arguments. ---
+// ------------------------------
+
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+// ---------------------------
+// --- End Initialization. ---
+// ---------------------------
+
+
+// ------------------------------
+// --- Read input parameters. ---
+// ------------------------------
+cntpop = 1;
+NRhs = 0;
+RhsField(cntpop) = AST_PopASTStack();
+RhsNames = [];
+while (RhsField(cntpop) ~= 'Expression:')
+ NRhs = NRhs + 1;
+ if RhsField(cntpop) <> 'Operands:'
+ [RhsNames(NRhs),RhsScope(NRhs)] = AST_ExtractNameAndScope(RhsField(cntpop));
+ end
+ cntpop = cntpop + 1;
+ RhsField(cntpop) = AST_PopASTStack();
+end
+RhsNames = SCI2Cflipud(RhsNames);
+RhsScope = SCI2Cflipud(RhsScope);
+
+// --- Repush everything into the stack. ---
+for cntpush = cntpop:-1:1
+ if RhsField(cntpush) <> 'Operands:'
+ AST_PushASTStack(RhsField(cntpush));
+ end
+end
+
+
+//for counterinputargs = 1:NRhs
+ //#RNU_RES_B
+ //disp(counterinputargs);
+ // PrintStringInfo('Input Argument Number '+string(counterinputargs)+': '+RhsNames(counterinputargs).Name,...
+ // ReportFileName,'file','y');
+ //PrintStringInfo(' Scope: '+RhsNames(counterinputargs).Scope,...
+ // ReportFileName,'file','y');
+ //#RNU_RES_E
+//end
+
+endfunction
diff --git a/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci b/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci
index 79fb516d..d8c2f73c 100644
--- a/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci
+++ b/2.3-1/macros/ASTManagement/AST_HandleWhileStatem.sci
@@ -36,6 +36,8 @@ global SCI2CSTACK
global StackPosition;
global STACKDEDUG
+IfCondArg = [];
+NIfCondArg = 0;
// ------------------------------
// --- Check input arguments. ---
@@ -70,36 +72,40 @@ PrintStringInfo(' Redirecting C code to: '+FileInfo.Funct(nxtscifunnumber).CPa
// --- 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');
+flagendpop = 0;
+IfExprField = AST_PopASTStack();
+
+NOp=0;
+Op=[];
+while (flagendpop == 0)
+ if (IfExprField~='<EOL>')
+ if (IfExprField=='WhileExpression:')
+ flagendpop = 1;
+ // Pop Again the If tag from the AST.
+ IfExprField = AST_PopASTStack();
+ elseif (IfExprField=='Operands:')
+ flagendpop = 0;
+ g = AST_PopASTStack();
+ else
+ if (IfExprField=='&&' | IfExprField=='||')
+ NOp = NOp + 1;
+ Op(NOp) = IfExprField;
+ //PrintStringInfo('operators are '+Op(NOp),ReportFileName,'file','y');
+ else
+ NIfCondArg = NIfCondArg + 1;
+ IfCondArg(NIfCondArg) = IfExprField;
+ end
+ //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
+ //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
+ end
end
+ IfExprField = AST_PopASTStack();
+ PrintStringInfo('operators are '+IfExprField,ReportFileName,'file','y');
+end
- SharedInfo.WhileExpr.CondVar = ArgName;
- //#RNU_RES_B
- // --- Repush strings into the AST stack. ---
- //#RNU_RES_E
-
- AST_PushASTStack(Pop1);
+IfCondArg = SCI2Cflipud(IfCondArg);
-elseif (SharedInfo.WhileExpr.DimCondVar > 0)
- error(9999, 'Cannot manage while with matrix conditions');
-end
-SharedInfo = C_WhileExpression(FileInfo,SharedInfo);
+SharedInfo = C_WhileExpression(IfCondArg,NIfCondArg,Op,NOp,FileInfo,SharedInfo);
// --------------------------
// --- Update SharedInfo. ---
diff --git a/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci
index fa76a01d..68bc3da7 100644
--- a/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci
+++ b/2.3-1/macros/ASTManagement/AST_ParseEqualStruct.sci
@@ -123,7 +123,7 @@ end
// ------------------------
//#RNU_RES_B
PrintStringInfo('Function Name: '+FunctionName,ReportFileName,'file','y','n');
-PrintStringInfo('N Intput Arguments: '+string(NInArg),ReportFileName,'file','y','n');
+PrintStringInfo('N Input Arguments: '+string(NInArg),ReportFileName,'file','y','n');
//#RNU_RES_E
if (SharedInfo.Equal.Nins > 0)
//#RNU_RES_B
diff --git a/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci
index 647a70d7..3c322dd5 100644
--- a/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci
+++ b/2.3-1/macros/ASTManagement/AST_ParseFuncallStruct.sci
@@ -87,6 +87,10 @@ NOutArg = eval(stripblanks(part(buffstring,10:length(buffstring))));
buffstring = AST_PopASTStack();
FunctionName = stripblanks(part(buffstring,12:length(buffstring)));
+//if (FunctionName == 'disp')
+ // NOutArg = 0;
+//end
+
// -------------------------------------
// --- Generate the InArg structure. ---
// -------------------------------------
diff --git a/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci
index a7da0128..2bfb08dd 100644
--- a/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci
+++ b/2.3-1/macros/ASTManagement/AST_ParseIfExprStruct.sci
@@ -1,4 +1,4 @@
-function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType)
+function [IfCondArg,NIfCondArg,Op,NOp] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType)
// function [IfCondArg,NIfCondArg] = AST_ParseIfExprStruct(FileInfo,SharedInfo,ASTIfExpType)
// -----------------------------------------------------------------
//#RNU_RES_B
@@ -63,13 +63,26 @@ global STACKDEDUG
// ------------------------------------
// --- Read if condition variables. ---
// ------------------------------------
+//OutArgOld=[];
+//OutArgNew=[];
+
+//for i = 1:3
+ // OutArgOld(i)=AST_PopASTStack();
+ //PrintStringInfo(' '+OutArgOld(i),ReportFileName,'file','y');
+//end
+//x = AST_PopASTStack();
+
+//OutArgNew = SCI2Cflipud(OutArgOld);
+
flagendpop = 0;
IfExprField = AST_PopASTStack();
+PrintStringInfo(' '+IfExprField+' '+ASTIfExpType,ReportFileName,'file','y');
if (ASTIfExpType=='if')
if (IfExprField=='Expression:')
flagendpop = 1;
// Pop Again the If tag from the AST.
IfExprField = AST_PopASTStack();
+ PrintStringInfo(' '+IfExprField,ReportFileName,'file','y');
end
elseif (ASTIfExpType=='elseif')
if (IfExprField=='Else If Expression')
@@ -78,31 +91,57 @@ elseif (ASTIfExpType=='elseif')
else
error(9999, 'Unknown ASTIfExpType ""'+ASTIfExpType+'"".');
end
-
+NOp=0;
+Op=[];
while (flagendpop == 0)
if (IfExprField~='<EOL>')
if (ASTIfExpType=='if')
if (IfExprField=='Expression:')
flagendpop = 1;
+ //PrintStringInfo('hello dere '+IfExprField,ReportFileName,'file','y');
// Pop Again the If tag from the AST.
IfExprField = AST_PopASTStack();
+ elseif (IfExprField=='Operands:')
+ flagendpop = 0;
+ g = AST_PopASTStack();
else
+ if (IfExprField=='&&' | IfExprField=='||')
+ NOp = NOp + 1;
+ Op(NOp) = IfExprField;
+ //PrintStringInfo('operators are '+Op(NOp),ReportFileName,'file','y');
+ else
NIfCondArg = NIfCondArg + 1;
- [IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
+ IfCondArg(NIfCondArg) = IfExprField;
+ end
+ //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
end
elseif (ASTIfExpType=='elseif')
if (IfExprField=='Else If Expression')
flagendpop = 1;
+ //IfExprField = AST_PopASTStack();
else
- NIfCondArg = NIfCondArg + 1;
- IfCondArg(NIfCondArg) = IfExprField;
- [IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
+ if (IfExprField=='&&' | IfExprField=='||')
+ NOp = NOp + 1;
+ Op(NOp) = IfExprField;
+ elseif (IfExprField=='Operands:')
+ flagendpop = 0;
+ g = AST_PopASTStack();
+ else
+ NIfCondArg = NIfCondArg + 1;
+ IfCondArg(NIfCondArg) = IfExprField;
+ end
+ //[IfCondArg(NIfCondArg),tmpscope] = AST_ExtractNameAndScope(IfExprField);
end
end
end
+ if flagendpop == 0
IfExprField = AST_PopASTStack();
+ end
+ PrintStringInfo('operators are '+IfExprField,ReportFileName,'file','y');
end
+IfCondArg = SCI2Cflipud(IfCondArg);
+
//#RNU_RES_B
// -------------------------------------------
// --- Print some info in the report file. ---
diff --git a/2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci b/2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci
index a77317bd..903f0958 100644
--- a/2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci
+++ b/2.3-1/macros/ASTManagement/AST_ParseOperStruct.sci
@@ -61,6 +61,17 @@ LabelFunctName = 'Operator: ';
FunctionName = stripblanks(part(buffstring,length(LabelFunctName)+1:length(buffstring)));
// Generate the proper function name.
FunctionName = Operator2FunName(FunctionName);
+PrintStringInfo(' '+FunctionName,ReportFileName,'file','y');
+
+if (FunctionName == 'OpLogAnd' | FunctionName=='OpLogOr')
+ NInArg = 0;
+ NOutArg = 0;
+ InArg=[];
+ //RhsField = AST_PopASTStack();
+ //PrintStringInfo('hello'+RhsField,ReportFileName,'file','y');
+ //RhsField = AST_PopASTStack();
+ return ;
+end
// ------------------------------
// --- Read input parameters. ---
diff --git a/2.3-1/macros/ASTManagement/GenOutArgNames.sci b/2.3-1/macros/ASTManagement/GenOutArgNames.sci
index 0e683835..7b62c794 100644
--- a/2.3-1/macros/ASTManagement/GenOutArgNames.sci
+++ b/2.3-1/macros/ASTManagement/GenOutArgNames.sci
@@ -32,6 +32,12 @@ SCI2CNInArgCheck(argn(2),9,9);
nxtscifunname = SharedInfo.NextSCIFunName;
nxtscifunnumber = SharedInfo.NextSCIFunNumber;
ReportFileName = FileInfo.Funct(nxtscifunnumber).ReportFileName;
+
+
+global SCI2CSTACK
+global StackPosition;
+global STACKDEDUG
+
// #RNU_RES_B
PrintStringInfo(' Generating Out Arg names.',ReportFileName,'file','y');
// #RNU_RES_E
@@ -43,47 +49,69 @@ OutArg = OldOutArg;
// ---------------------------------------------------------------------------------------
// 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
+if (FunctionName ~= 'OpLogGt' & FunctionName ~= 'OpLogLt' & FunctionName ~= 'OpLogGe' & FunctionName ~= 'OpLogLe' & FunctionName ~= 'OpLogNe' & FunctionName ~= 'OpLogEq')
+ 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
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
+ for counterinputargs = 1:NInArg
+ tmppushstack=InArg(counterinputargs).Name;
+ PrintStringInfo(' Pushing in the AST stack: ""'+tmppushstack+'"".',ReportFileName,'file','y');
+ AST_PushASTStack(tmppushstack);
+ if FunctionName=='OpLogGt'
+ AST_PushASTStack('>');
+ elseif FunctionName=='OpLogGe'
+ AST_PushASTStack('>=');
+ elseif FunctionName=='OpLogLt'
+ AST_PushASTStack('<');
+ elseif FunctionName=='OpLogLe'
+ AST_PushASTStack('<=');
+ elseif FunctionName=='OpLogEq'
+ AST_PushASTStack('==');
+ elseif FunctionName=='OpLogNe'
+ AST_PushASTStack('!=');
+ end
+ end
+ s = AST_PopASTStack();
+ PrintStringInfo(' Pushing in the AST stack: ""'+s+'"".',ReportFileName,'file','y');
end
-
endfunction
diff --git a/2.3-1/macros/ASTManagement/_funcall_string.sci b/2.3-1/macros/ASTManagement/_funcall_string.sci
index faeb81d9..0ee97016 100644
--- a/2.3-1/macros/ASTManagement/_funcall_string.sci
+++ b/2.3-1/macros/ASTManagement/_funcall_string.sci
@@ -6,10 +6,19 @@ function txt=%funcall_string(F)
// name : string, the name of the function
// lhsnb: number, the number of function lhs
+if F.name <> 'disp'
txt=['Funcall : '+F.name
' #lhs : '+string(F.lhsnb)
' Rhs : '
' '+objectlist2string(F.rhs)
'EndFuncall'
]
+else
+txt=['Funcall : '+F.name
+ ' #lhs : '+'0'
+ ' Rhs : '
+ ' '+objectlist2string(F.rhs)
+ 'EndFuncall'
+ ]
+end
endfunction
diff --git a/2.3-1/macros/ASTManagement/_operatio_string.sci b/2.3-1/macros/ASTManagement/_operatio_string.sci
index 8421a3f4..e9332337 100644
--- a/2.3-1/macros/ASTManagement/_operatio_string.sci
+++ b/2.3-1/macros/ASTManagement/_operatio_string.sci
@@ -10,4 +10,4 @@ function txt=%operatio_string(O)
' Operator: '+O.operator
'EndOperation'
]
-endfunction \ No newline at end of file
+endfunction
diff --git a/2.3-1/macros/ASTManagement/_operation_string.sci b/2.3-1/macros/ASTManagement/_operation_string.sci
index 84f5ce3c..c9282f67 100644
--- a/2.3-1/macros/ASTManagement/_operation_string.sci
+++ b/2.3-1/macros/ASTManagement/_operation_string.sci
@@ -10,4 +10,4 @@ function txt=%operation_string(O)
' Operator: '+O.operator
'EndOperation'
]
-endfunction \ No newline at end of file
+endfunction
diff --git a/2.3-1/macros/ASTManagement/lib b/2.3-1/macros/ASTManagement/lib
index 80a0b24d..67ea09be 100644
--- a/2.3-1/macros/ASTManagement/lib
+++ 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
index a1aafbc1..6deb883d 100644
--- a/2.3-1/macros/ASTManagement/names
+++ b/2.3-1/macros/ASTManagement/names
@@ -21,6 +21,7 @@ AST_ExtractNameAndScope
AST_GetASTFile
AST_GetFuncallPrm
AST_GetPrecAndLhsArg
+AST_HandleCC
AST_HandleEOL
AST_HandleEndFor
AST_HandleEndGenFun
@@ -28,8 +29,11 @@ AST_HandleEndProgram
AST_HandleEndWhile
AST_HandleFor
AST_HandleForStatem
+AST_HandleFunCC
+AST_HandleFunRC
AST_HandleHeader
AST_HandleIfElse
+AST_HandleRC
AST_HandleWhileExpr
AST_HandleWhileStatem
AST_ParseEqualStruct
diff --git a/2.3-1/macros/CCodeGeneration/C_GenDeclarations_Dup.sci b/2.3-1/macros/CCodeGeneration/C_GenDeclarations_Dup.sci
new file mode 100644
index 00000000..475e2e0c
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenDeclarations_Dup.sci
@@ -0,0 +1,187 @@
+function Cdeclaration = C_GenDeclarations_Dup(InArg,NInArg,com_type,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),9,9);
+// #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+']={';
+ row = eval(ArgStruct.Size(1))
+ col = eval(ArgStruct.Size(2))
+ if row == 1
+ if com_type == 0
+ for i = 1:NInArg-1
+ Cdeclaration(1) = Cdeclaration(1)+InArg(i).Name+',';
+ end
+ Cdeclaration(1) = Cdeclaration(1)+InArg(NInArg).Name+'};';
+ else
+ for i=1:NInArg-1
+ if InArg(i).Type <> 'z' & InArg(i).Type <> 'c'
+ Cdeclaration(1) = Cdeclaration(1)+InArg(i).Name+',0,';
+ else
+ Cdeclaration(1) = Cdeclaration(1)+InArg(i).Name+',';
+ end
+ end
+ if InArg(NInArg).Type <> 'z' & InArg(NInArg).Type <> 'c'
+ Cdeclaration(1) = Cdeclaration(1) + InArg(NInArg).Name + ',0};'
+ else
+ Cdeclaration(1) = Cdeclaration(1) + InArg(NInArg).Name + '};'
+ end
+ end
+ else
+ if com_type == 0
+ for i = 1:col
+ for j = 0:row-1
+ if (j*col)+i ~= row*col
+ Cdeclaration(1) = Cdeclaration(1) + InArg(((j*col)+i)).Name + ',';
+ end
+ end
+ end
+ Cdeclaration(1) = Cdeclaration(1) + InArg(NInArg).Name + '};';
+ else
+ for i = 1:col
+ for j = 0:row-1
+ if (j*col)+i ~= row*col
+ if InArg(((j*col)+i)).Type <> 'z' & InArg(((j*col)+i)).Type <> 'c'
+ Cdeclaration(1) = Cdeclaration(1) + InArg(((j*col)+i)).Name + ',0,';
+ else
+ Cdeclaration(1) = Cdeclaration(1) + InArg(((j*col)+i)).Name + ',';
+ end
+ end
+ end
+ end
+ if InArg(NInArg).Type <> 'z' & InArg(NInArg).Type <> 'c'
+ Cdeclaration(1) = Cdeclaration(1) + InArg(NInArg).Name + ',0};';
+ else
+ Cdeclaration(1) = Cdeclaration(1) + InArg(NInArg).Name + '};';
+ end
+ end
+ end
+ 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. ---
+// --------------------------------------------
+PrintStringInfo(' ',CDeclarationFileName,'file','y');
+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_GenerateMakefile.sci b/2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci
index f209b382..3b977bd6 100644
--- a/2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateMakefile.sci
@@ -78,6 +78,25 @@ else
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 ode function is used, add libgsl.
+ if(size(SharedInfo.Includelist) <> 0)
+ if((mtlb_strcmp(part(SharedInfo.Includelist(1),1:5),'odefn') == %T))
+ if(target == 'RPi')
+ PrintStringInfo('LDFLAGS = -lgsl -lcblas',FileInfo.MakefileFilename,'file','y','y');
+ else
+ PrintStringInfo('LDFLAGS = -lgsl',FileInfo.MakefileFilename,'file','y','y');
+ end
+
+ end
+ end
+
+ if (target == 'RPi')
+ PrintStringInfo('LDFLAGS += -llapack -lrefblas -lgfortran -lwiringPi',FileInfo.MakefileFilename,'file','y','y');
+ else
+ 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');
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..b43eb442
--- /dev/null
+++ b/2.3-1/macros/CCodeGeneration/C_GenerateMkfle_arduino.sci
@@ -0,0 +1,12 @@
+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_IfExpression.sci b/2.3-1/macros/CCodeGeneration/C_IfExpression.sci
index 48a05383..359b7882 100644
--- a/2.3-1/macros/CCodeGeneration/C_IfExpression.sci
+++ b/2.3-1/macros/CCodeGeneration/C_IfExpression.sci
@@ -1,4 +1,4 @@
-function SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,SharedInfo)
+function SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,Op,NOp,ASTIfExpType,FileInfo,SharedInfo)
// function SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,SharedInfo)
// -----------------------------------------------------------------
// //NUT: add description here
@@ -19,12 +19,16 @@ function SharedInfo = C_IfExpression(IfCondArg,NIfCondArg,ASTIfExpType,FileInfo,
// ------------------------------
// --- Check input arguments. ---
// ------------------------------
-SCI2CNInArgCheck(argn(2),5,5);
+SCI2CNInArgCheck(argn(2),7,7);
+
+//global SCI2CSTACK
+//global StackPosition;
+//global STACKDEDUG
// --- 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
+//if ((NIfCondArg ~= 1) & (ASTIfExpType~='else'))
+ // error(9999, 'Cannot manage ""if/elseif"" with a number of condition variables not equal to 1.');
+//end
// -----------------------
// --- Initialization. ---
@@ -37,7 +41,7 @@ CPass1FileName = FileInfo.Funct(nxtscifunnumber).CPass1FileName;
// #RNU_RES_B
PrintStringInfo(' ',ReportFileName,'file','y');
-PrintStringInfo('***Generating C code***',ReportFileName,'file','y');
+PrintStringInfo('***Generating C code***'+ string(NIfCondArg),ReportFileName,'file','y');
// #RNU_RES_E
// ---------------------------
// --- End Initialization. ---
@@ -66,10 +70,23 @@ if SCI2Cstrncmps1size(ASTIfExpType,'else')
SharedInfo = C_IfElseBlocks(FileInfo,SharedInfo,'out');
end
+i=1;
+k=1;
CCall ='';
CCall = CCall+CFunName;
if (ASTIfExpType~='else')
- CCall = CCall+'('+IfCondArg(1)+')';
+ CCall = CCall+'(';
+ while i <= NIfCondArg
+ CCall = CCall + IfCondArg(i) + ' ';
+ //d = modulo(i,3);
+ //PrintStringInfo(' '+string(i)+string(d),'file','y');
+ if (modulo(i,3)==0 & i<>NIfCondArg)
+ CCall = CCall + Op(k) + ' ';
+ k = k + 1;
+ end
+ i = i + 1;
+ end
+ CCall = CCall+')';
end
PrintStringInfo(' '+CCall,ReportFileName,'file','y');
PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
diff --git a/2.3-1/macros/CCodeGeneration/C_WhileExpression.sci b/2.3-1/macros/CCodeGeneration/C_WhileExpression.sci
index edd2830e..368ccffa 100644
--- a/2.3-1/macros/CCodeGeneration/C_WhileExpression.sci
+++ b/2.3-1/macros/CCodeGeneration/C_WhileExpression.sci
@@ -1,4 +1,4 @@
-function SharedInfo = C_WhileExpression(FileInfo,SharedInfo)
+function SharedInfo = C_WhileExpression(IfCondArg,NIfCondArg,Op,NOp,FileInfo,SharedInfo)
// function SharedInfo = C_WhileExpression(FileInfo,SharedInfo)
// -----------------------------------------------------------------
// //NUT: add description here
@@ -19,7 +19,7 @@ function SharedInfo = C_WhileExpression(FileInfo,SharedInfo)
// ------------------------------
// --- Check input arguments. ---
// ------------------------------
-SCI2CNInArgCheck(argn(2),2,2);
+SCI2CNInArgCheck(argn(2),6,6);
// -----------------------
// --- Initialization. ---
@@ -63,7 +63,7 @@ for cntstr = 1:NumCStrings
// 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),
+ // 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');
@@ -76,7 +76,27 @@ PrintStringInfo('}',CPass1WhileEpilFileName ,'file','y');
// ------------------------------
// --- Insert for expression. ---
// ------------------------------
-CCall = 'while('+SharedInfo.WhileExpr.CondVar+')';
+//CCall = 'while('+SharedInfo.WhileExpr.CondVar+')';
+//PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
+
+i=1;
+k=1;
+CCall ='';
+CCall = CCall+'while';
+ CCall = CCall+'(';
+ while i <= NIfCondArg
+ CCall = CCall + IfCondArg(i) + ' ';
+ //d = modulo(i,3);
+ //PrintStringInfo(' '+string(i)+string(d),'file','y');
+ if (modulo(i,3)==0 & i<>NIfCondArg)
+ CCall = CCall + Op(k) + ' ';
+ k = k + 1;
+ end
+ i = i + 1;
+ end
+ CCall = CCall+')';
+
+PrintStringInfo(' '+CCall,ReportFileName,'file','y');
PrintStringInfo(C_IndentBlanks(SharedInfo.NIndent)+CCall,CPass1FileName,'file','y');
// -------------------
diff --git a/2.3-1/macros/CCodeGeneration/GetClsFileName.sci b/2.3-1/macros/CCodeGeneration/GetClsFileName.sci
index 46f08201..d92a431c 100644
--- a/2.3-1/macros/CCodeGeneration/GetClsFileName.sci
+++ b/2.3-1/macros/CCodeGeneration/GetClsFileName.sci
@@ -45,6 +45,7 @@ if SCI2Cfileexist(FileInfo.USER2CLibCAnnFun,tmpannfilename)
// #RNU_RES_B
// It is a C function of the USER2C library.
// #RNU_RES_E
+ PrintStringInfo('cUser2c',ReportFileName,'file','y');
FlagFoundAnnFile = 1;
AnnFileName = fullfile(FileInfo.USER2CLibCAnnFun,tmpannfilename);
SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
@@ -53,6 +54,7 @@ elseif SCI2Cfileexist(FileInfo.USER2CLibSCIAnnFun,tmpannfilename)
// #RNU_RES_B
// It is a scilab function of the USER2C library.
// #RNU_RES_E
+ PrintStringInfo('fUser2c',ReportFileName,'file','y');
FlagFoundAnnFile = 1;
AnnFileName = fullfile(FileInfo.USER2CLibSCIAnnFun,tmpannfilename);
SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
@@ -61,6 +63,7 @@ elseif (SCI2Cfileexist(FileInfo.SCI2CLibCAnnFun,tmpannfilename))
// #RNU_RES_B
// It is a C function of the SCI2C library.
// #RNU_RES_E
+ PrintStringInfo('csci2c',ReportFileName,'file','y');
FlagFoundAnnFile = 1;
AnnFileName = fullfile(FileInfo.SCI2CLibCAnnFun,tmpannfilename);
SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
@@ -69,6 +72,7 @@ elseif (SCI2Cfileexist(FileInfo.SCI2CLibSCIAnnFun,tmpannfilename))
// #RNU_RES_B
// It is a scilab function of the SCI2C library.
// #RNU_RES_E
+ PrintStringInfo('fsci2c',ReportFileName,'file','y');
FlagFoundAnnFile = 1;
AnnFileName = fullfile(FileInfo.SCI2CLibSCIAnnFun,tmpannfilename);
SCI2CClassName = FL_GetFunctionClass(AnnFileName,SCI2CClassSpecifier,ReportFileName);
diff --git a/2.3-1/macros/CCodeGeneration/lib b/2.3-1/macros/CCodeGeneration/lib
index edcb004d..2db4b8c8 100644
--- a/2.3-1/macros/CCodeGeneration/lib
+++ 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
index efbb400a..56caa81d 100644
--- a/2.3-1/macros/CCodeGeneration/names
+++ b/2.3-1/macros/CCodeGeneration/names
@@ -2,10 +2,12 @@ C_FinalizeCode
C_ForExpression
C_Funcall
C_GenDeclarations
+C_GenDeclarations_Dup
C_GenerateFunName
C_GenerateLaunchScript
C_GenerateMakefile
C_GenerateMakefile_msvc
+C_GenerateMkfle_arduino
C_GenerateSCI2CHeader
C_IfElseBlocks
C_IfExpression
diff --git a/2.3-1/macros/ErrorMessages/lib b/2.3-1/macros/ErrorMessages/lib
index 3630f722..0a9f8913 100644
--- a/2.3-1/macros/ErrorMessages/lib
+++ b/2.3-1/macros/ErrorMessages/lib
Binary files differ
diff --git a/2.3-1/macros/FunctionAnnotation/FA_FSFIRLIN_SZ.sci b/2.3-1/macros/FunctionAnnotation/FA_FSFIRLIN_SZ.sci
new file mode 100644
index 00000000..c1dc9e50
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_FSFIRLIN_SZ.sci
@@ -0,0 +1,9 @@
+function outp=FA_FSFIRLIN_SZ(in1sz2)
+ in1sz2=string(in1sz2);
+ in1sz=eval(in1sz2);
+ if(int(in1sz/2)==in1sz/2) then
+ outp=string(4*in1sz+1);
+ else
+ outp=string(4*in1sz+3);
+ end
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci b/2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci
index d11e3cee..3fadd1f2 100644
--- a/2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci
+++ b/2.3-1/macros/FunctionAnnotation/FA_GetFunAnn.sci
@@ -52,7 +52,7 @@ FunSizeAnnot = '';
// ---------------------------------------------
// --- Open the .sci file (read only). ---
inclsfid = SCI2COpenFileRead(SCI2CClassFileName);
-
+PrintStringInfo(' '+string(inclsfid),ReportFileName,'file','y');
// #RNU_RES_B
// --- Loop over the lines of the input file. ---
// Position file pointer to the desired NInArg/NOutArg section,
@@ -212,5 +212,6 @@ mclose(inclsfid);
// -------------------------------------------------
// --- End Read the annotations of the function. ---
// -------------------------------------------------
+PrintStringInfo(' end of annotation '+string(NOutArg_mod),ReportFileName,'file','y');
endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_MODSN.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_MODSN.sci
new file mode 100644
index 00000000..4a58e644
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_MODSN.sci
@@ -0,0 +1,11 @@
+function outt=FA_SZ_MODSN(in1sz)
+
+in1sz=string(in1sz);
+in1s=eval(in1sz)
+if(in1s>1) then
+ outt=string(in1s);
+else
+ outt=string(1);
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_SZ_U_SVA.sci b/2.3-1/macros/FunctionAnnotation/FA_SZ_U_SVA.sci
new file mode 100644
index 00000000..3b8b25c5
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_SZ_U_SVA.sci
@@ -0,0 +1,39 @@
+function opout = FA_SZ_U_SVA(in1,in2)
+
+// function opout = FA_SZ_U_SVA(in1,in2)
+// -----------------------------------------------------------------
+// Determines the number of rows of the output arguments
+// according to the second input argument.
+//
+// Input data:
+// in1: specifying a matrix or a symbol.
+// in2: string specifying a number or a symbol.
+//
+// Output data:
+// opout: string containing the computed size of U matrix.
+//
+// Copyright (C) 2017 - IIT Bombay - FOSSEE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+// Author: Sandeep Gupta
+// Organization: FOSSEE, IIT Bombay
+// Email: toolbox@scilab.in
+//
+// -----------------------------------------------------------------
+
+//in1 = string(in1);
+// disp(in1)
+// disp(in2)
+//in1 = eval(in1);
+//in2 = string(in2);
+//in2 = eval(in2);
+//[U,S,V] = sva(in1,in2);
+//outsize = size(U)
+//opout = outsize(2)
+opout = string(in2)
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_ASCII.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_ASCII.sci
new file mode 100644
index 00000000..e05dd7ae
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_ASCII.sci
@@ -0,0 +1,10 @@
+function outtp=FA_TP_ASCII(in1tp)
+
+in1tp=string(in1tp);
+if(in1tp=='g') then
+ outtp='u8';
+else
+ outtp='g';
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/FA_TP_MODSN.sci b/2.3-1/macros/FunctionAnnotation/FA_TP_MODSN.sci
new file mode 100644
index 00000000..f766b4e7
--- /dev/null
+++ b/2.3-1/macros/FunctionAnnotation/FA_TP_MODSN.sci
@@ -0,0 +1,10 @@
+function outtp=FA_TP_MODSN(in1tp)
+
+in1tp=string(in1tp);
+if(in1tp=='d') then
+ outtp='d';
+else
+ outtp='z';
+end
+
+endfunction
diff --git a/2.3-1/macros/FunctionAnnotation/lib b/2.3-1/macros/FunctionAnnotation/lib
index a605af93..f02997b0 100644
--- a/2.3-1/macros/FunctionAnnotation/lib
+++ 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
index 2ffbab1a..a558e8d9 100644
--- a/2.3-1/macros/FunctionAnnotation/names
+++ b/2.3-1/macros/FunctionAnnotation/names
@@ -1,5 +1,6 @@
FA_ADD
FA_DIV
+FA_FSFIRLIN_SZ
FA_GetDefaultPrecision
FA_GetFunAnn
FA_GetOutArgInfo
@@ -27,6 +28,7 @@ FA_SZ_FROM_VAL
FA_SZ_LINSPACE_ROW
FA_SZ_LQE
FA_SZ_LQR
+FA_SZ_MODSN
FA_SZ_OBSCNT
FA_SZ_OPAPEX
FA_SZ_OPBACKSLASH
@@ -58,6 +60,8 @@ FA_SZ_ROW_DIAG
FA_SZ_ROW_DIAG_INS_EXT
FA_SZ_SEL1
FA_SZ_SEL2
+FA_SZ_U_SVA
+FA_TP_ASCII
FA_TP_C
FA_TP_COMPLEX
FA_TP_CVIMAGE
@@ -67,6 +71,7 @@ FA_TP_INT16
FA_TP_INT8
FA_TP_MAX
FA_TP_MIN_REAL
+FA_TP_MODSN
FA_TP_REAL
FA_TP_S
FA_TP_UINT16
diff --git a/2.3-1/macros/FunctionList/lib b/2.3-1/macros/FunctionList/lib
index 7aaf8224..2bbf0cbe 100644
--- a/2.3-1/macros/FunctionList/lib
+++ b/2.3-1/macros/FunctionList/lib
Binary files differ
diff --git a/2.3-1/macros/GeneralFunctions/lib b/2.3-1/macros/GeneralFunctions/lib
index a141419f..e1d6f0fb 100644
--- a/2.3-1/macros/GeneralFunctions/lib
+++ b/2.3-1/macros/GeneralFunctions/lib
Binary files differ
diff --git a/2.3-1/macros/Hardware/AVR/lib b/2.3-1/macros/Hardware/AVR/lib
index 7ca99340..5c8f0da2 100644
--- a/2.3-1/macros/Hardware/AVR/lib
+++ b/2.3-1/macros/Hardware/AVR/lib
Binary files differ
diff --git a/2.3-1/macros/Hardware/RasberryPi/lib b/2.3-1/macros/Hardware/RasberryPi/lib
index ef9e942d..9afd77da 100644
--- a/2.3-1/macros/Hardware/RasberryPi/lib
+++ b/2.3-1/macros/Hardware/RasberryPi/lib
Binary files differ
diff --git a/2.3-1/macros/ImageProcessing/core/lib b/2.3-1/macros/ImageProcessing/core/lib
index d109e50d..56053510 100644
--- a/2.3-1/macros/ImageProcessing/core/lib
+++ b/2.3-1/macros/ImageProcessing/core/lib
Binary files differ
diff --git a/2.3-1/macros/ImageProcessing/highgui/lib b/2.3-1/macros/ImageProcessing/highgui/lib
index 8e900fee..a46d5d87 100644
--- a/2.3-1/macros/ImageProcessing/highgui/lib
+++ b/2.3-1/macros/ImageProcessing/highgui/lib
Binary files differ
diff --git a/2.3-1/macros/ImageProcessing/imgproc/lib b/2.3-1/macros/ImageProcessing/imgproc/lib
index cef8f9b8..4863059b 100644
--- a/2.3-1/macros/ImageProcessing/imgproc/lib
+++ b/2.3-1/macros/ImageProcessing/imgproc/lib
Binary files differ
diff --git a/2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci b/2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci
index a112fe6a..eff61fe6 100644
--- a/2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci
+++ b/2.3-1/macros/Scilab-Arduino/GetArduinoFunctions.sci
@@ -30,6 +30,7 @@ ArduinoFunctions = [
"cmd_dcmotor_run"
"cmd_servo_attach"
"cmd_servo_detach"
- "cmd_servo_move"];
+ "cmd_servo_move"
+ "i2c_dev"];
endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci b/2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci
index d2cd0c74..d310648e 100644
--- a/2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci
+++ b/2.3-1/macros/Scilab-Arduino/GetArduinoSetupFunctions.sci
@@ -24,6 +24,8 @@ function ArduinoSetupFunctions = GetArduinoSetupFunctions()
ArduinoSetupFunctions = [
"cmd_dcmotor_setup"
"cmd_servo_attach"
- "cmd_servo_detach"];
+ "cmd_servo_detach"
+ "i2c_dev"];
+
endfunction
diff --git a/2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci b/2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci
index 3e1c18fb..4afceca8 100644
--- a/2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci
+++ b/2.3-1/macros/Scilab-Arduino/IsArduinoSetupFunction.sci
@@ -9,6 +9,7 @@
// Email: toolbox@scilab.in
function Output = IsArduinoSetupFunction(FunName)
+disp(FunName)
// -----------------------------------------------------------------
// Check whether input function name is an Arduino setup function or not.
//
@@ -25,6 +26,7 @@ function Output = IsArduinoSetupFunction(FunName)
//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);
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
index 75e5b330..0304cade 100644
--- a/2.3-1/macros/Scilab-Arduino/lib
+++ 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
index 55eb6fef..8b8d7c48 100644
--- a/2.3-1/macros/Scilab-Arduino/names
+++ b/2.3-1/macros/Scilab-Arduino/names
@@ -4,3 +4,8 @@ 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_GetInArgInfo.sci b/2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci
index 9f5cbd4e..4c85408c 100644
--- a/2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci
+++ b/2.3-1/macros/SymbolTable/ST_GetInArgInfo.sci
@@ -49,13 +49,13 @@ for cntinarg = 1:NInArg
tmpname = InArg(cntinarg).Name;
tmpscope = InArg(cntinarg).Scope;
lengthNumber = length('Number_');
- if (part(tmpscope,1:lengthNumber) == '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.
+ 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.
@@ -101,6 +101,17 @@ for cntinarg = 1:NInArg
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
diff --git a/2.3-1/macros/SymbolTable/ST_InsOutArg.sci b/2.3-1/macros/SymbolTable/ST_InsOutArg.sci
index f4958ff7..fd6b426c 100644
--- a/2.3-1/macros/SymbolTable/ST_InsOutArg.sci
+++ b/2.3-1/macros/SymbolTable/ST_InsOutArg.sci
@@ -47,8 +47,6 @@ PrintStringInfo('***Putting output arguments in the symbol table***',ReportFileN
// ---------------------------
// --- End Initialization. ---
// ---------------------------
-
-
for counteroutput = 1:NOutArg
// #RNU_RES_B
PrintStringInfo(' Symbol ""'+OutArg(counteroutput).Name+'""',ReportFileName,'file','y','n');
diff --git a/2.3-1/macros/SymbolTable/ST_InsOutArg_Dup.sci b/2.3-1/macros/SymbolTable/ST_InsOutArg_Dup.sci
new file mode 100644
index 00000000..bca66235
--- /dev/null
+++ b/2.3-1/macros/SymbolTable/ST_InsOutArg_Dup.sci
@@ -0,0 +1,195 @@
+function ST_InsOutArg_Dup(InArg,NInArg,OutArg,NOutArg,com_type,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
+// -----------------------------------------------------------------
+SCI2CNInArgCheck(argn(2),8,8)
+
+
+// ------------------------------
+// --- 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_Dup(InArg,NInArg,com_type,OutArg(counteroutput),CPass1FileName,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/lib b/2.3-1/macros/SymbolTable/lib
index 3b60d2d4..dbc603e2 100644
--- a/2.3-1/macros/SymbolTable/lib
+++ 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
index b5a7d65f..c2efc843 100644
--- a/2.3-1/macros/SymbolTable/names
+++ b/2.3-1/macros/SymbolTable/names
@@ -6,6 +6,7 @@ ST_GetInArgInfo
ST_GetSymbolInfo
ST_InsForCntVars
ST_InsOutArg
+ST_InsOutArg_Dup
ST_Load
ST_MatchSymbol
ST_Save
diff --git a/2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
index ffc7d482..78c48ec2 100644
--- a/2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
+++ b/2.3-1/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
@@ -920,6 +920,212 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,E
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
// -------------------
+// --- Class Isreal. ---
+// -------------------
+ClassName = 'Isreal';
+
+// --- 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('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'d0',ClassFileName,'file','y');
+//PrintStringInfo('z0'+ArgSeparator+'z0',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'isreal';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+ClassName = 'gcd';
+
+// --- 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('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'gcd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+ClassName = 'nextpow2';
+
+// --- 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');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+//PrintStringInfo('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+PrintStringInfo('d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'nextpow2';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+ClassName = 'interp1';
+
+// --- 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');
+
+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'); //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');
+
+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'); //FOR INRIA changed from IN(1).TP to FA_TP_USER
+PrintStringInfo('OUT(1).SZ(1)= IN(3).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(3).SZ(2)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 4',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('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('u80'+ArgSeparator+'u80',ClassFileName,'file','y');
+//PrintStringInfo('d2'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('d2d2d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2d2g2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s2s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s2s2g2'+ArgSeparator+'s2',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 DCT. ---
+// -------------------
+ClassName = 'dct';
+
+// --- 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');
+
+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'); //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('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+PrintStringInfo('c2s0'+ArgSeparator+'c2',ClassFileName,'file','y');
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'dct';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+// -------------------
+// --- Class IDCT. ---
+// -------------------
+ClassName = 'idct';
+
+// --- 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('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2'+ArgSeparator+'s2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('c2'+ArgSeparator+'c2',ClassFileName,'file','y');
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'idct';
+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';
@@ -1279,7 +1485,9 @@ ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
PrintStringInfo('d0d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s0s0s0'+ArgSeparator+'s2',ClassFileName,'file','y');
PrintStringInfo('d2d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('s2s2s0'+ArgSeparator+'s2',ClassFileName,'file','y');
// --- Annotation Function And Function List Function. ---
@@ -4340,6 +4548,49 @@ PrintStringInfo('OUT(2).TP= FA_TP_COMPLEX(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');
+// Edited by Sandeep Gupta, IITB FOSSEE Project.
+PrintStringInfo('NIN= 2',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= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',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('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)= ''1''',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',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('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)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= FA_TP_COMPLEX(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(1)',ClassFileName,'file','y');
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 4',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('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)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).TP= FA_TP_COMPLEX(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(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(4).TP= FA_TP_COMPLEX(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(1)',ClassFileName,'file','y');
+
// --- Function List Class. ---
//NUT: no mixed data types
ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
@@ -4368,6 +4619,12 @@ PrintStringInfo('d2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
PrintStringInfo('c2'+ArgSeparator+'c2c2',ClassFileName,'file','y');
PrintStringInfo('z2'+ArgSeparator+'z2z2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'z2d2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'z2d2z2',ClassFileName,'file','y');
+PrintStringInfo('d2d2'+ArgSeparator+'z2d2z2z2',ClassFileName,'file','y');
+
+
// --- Annotation Function And Function List Function. ---
FunctionName = 'spec'; // AS : Done AS : Float_Done
PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
@@ -4712,6 +4969,165 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,Ex
//------------------------------------
+//---- 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 -------------------
//------------------------------------
@@ -4738,6 +5154,57 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,Ex
//------------------------------------
+//---- 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 ---------------
//------------------------------------
@@ -7194,15 +7661,34 @@ 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(1)= FA_SZ_2(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(1)= FA_SZ_1(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');
+
+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_2(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_1(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');
+
+PrintStringInfo('NIN= 4',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_2(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_1(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');
-
+PrintStringInfo('ss2d2d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+PrintStringInfo('ss2d2d2d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
// --- Annotation Function And Function List Function. ---
FunctionName = 'lqr';
PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
@@ -7270,6 +7756,168 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file',
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+//------------------------------------
+//---- Class svd ---------------------
+//------------------------------------
+ClassName = 'SVD';
+
+// --- 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)= ''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)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),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(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',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)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),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(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+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_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''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)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),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(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',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)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),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(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2g2'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+PrintStringInfo('z2g2'+ArgSeparator+'z2z2z2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2z2z2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'svd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class HESS ---------------------
+//------------------------------------
+ClassName = 'HESS';
+
+// --- 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');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'d2d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'hess';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class SVA ---------------------
+//------------------------------------
+ClassName = 'SVA';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+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)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),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(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',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)= FA_SZ_U_SVA(IN(1),IN(2).VAL)',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= IN(1).TP',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= FA_MIN(IN(1).SZ(1),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(2)',ClassFileName,'file','y');
+PrintStringInfo('OUT(3).SZ(2)= FA_MIN(IN(1).SZ(1),IN(1).SZ(2))',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2d2d2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sva';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
//------------------------------------
//---- Class balanc ------------------
@@ -7496,6 +8144,153 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file',
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+//------------------------------------
+//---- Class STRCHR --------------------
+//------------------------------------
+ClassName = 'STRCHR';
+
+// --- 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 = 'strchr';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class STRNCPY --------------------
+//------------------------------------
+ClassName = 'STRNCPY';
+
+// --- 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)= IN(2).VAL',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2d0'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strncpy';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class STRSPN --------------------
+//------------------------------------
+ClassName = 'STRSPN';
+
+// --- 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= ''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('g2g2'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strspn';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class STRCSPN --------------------
+//------------------------------------
+ClassName = 'STRCSPN';
+
+// --- 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= ''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('g2g2'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'strcspn';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+//------------------------------------
+//---- Class ASCII --------------------
+//------------------------------------
+ClassName = 'ASCII';
+
+// --- 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= FA_TP_ASCII(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SUB(IN(1).SZ(2),''1'')',ClassFileName,'file','y');
+
+//PrintStringInfo('NIN= 1',ClassFileName,'file','y');
+//PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).TP= FA_TP_ASCII(IN(1).TP)',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+//PrintStringInfo('OUT(1).SZ(2)= FA_SUB(IN(1).SZ(2),''1'')',ClassFileName,'file','y');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2'+ArgSeparator+'u82',ClassFileName,'file','y');
+PrintStringInfo('d2'+ArgSeparator+'g2',ClassFileName,'file','y');
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'ascii';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
//------------------------------------
@@ -8122,6 +8917,7 @@ PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
// --- Function List Class. ---
ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2d2d2'+ArgSeparator+'d0',ClassFileName,'file','y');
PrintStringInfo('d2d2d0g2'+ArgSeparator+'d0',ClassFileName,'file','y');
//PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
//PrintStringInfo('s0'+ArgSeparator+'s0',ClassFileName,'file','y');
@@ -8139,6 +8935,36 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,E
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+// --- Class Modk. ---
+// ------------------
+ClassName = 'Modk';
+
+// --- 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('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 = 'modk';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
//------------------------------------
//---- Class PRIMES --------------------
@@ -8169,6 +8995,66 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,Ex
//------------------------------------
+//---- Class GCD --------------------
+//------------------------------------
+ClassName = 'GCD';
+
+// --- 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)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y');
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'gcd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class LCM --------------------
+//------------------------------------
+ClassName = 'LCM';
+
+// --- 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= ''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('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'lcm';
+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';
@@ -8197,6 +9083,469 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,Ex
+//------------------------------------
+//---- Class GCD --------------------
+//------------------------------------
+ClassName = 'GCD';
+
+// --- 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= ''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('u82'+ArgSeparator+'u80',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'gcd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class ZPBUTT --------------------
+//------------------------------------
+ClassName = 'ZPBUTT';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+
+PrintStringInfo('NIN= 2',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''z''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).VAL',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');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'z2d0',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'zpbutt';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class ZPCH1 --------------------
+//------------------------------------
+ClassName = 'ZPCH1';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 2',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''z''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).VAL',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');
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'z2d0',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'zpch1';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class ZPCH2 --------------------
+//------------------------------------
+ClassName = 'ZPCH2';
+
+// --- Class Annotation. ---
+PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y');
+ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls);
+
+
+PrintStringInfo('NIN= 3',ClassFileName,'file','y');
+PrintStringInfo('NOUT= 3',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).TP= ''z''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).VAL',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).TP= ''z''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(1)= ''1''',ClassFileName,'file','y');
+PrintStringInfo('OUT(2).SZ(2)= IN(1).VAL',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');
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0'+ArgSeparator+'z2z2d0',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'zpch2';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class BUTTMAG --------------------
+//------------------------------------
+ClassName = 'BUTTMAG';
+
+// --- 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)= IN(3).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(3).SZ(2)',ClassFileName,'file','y');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80u80d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'buttmag';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+//------------------------------------
+//---- Class CHEB1MAG --------------------
+//------------------------------------
+ClassName = 'CHEB1MAG';
+
+// --- 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(4).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(4).SZ(2)',ClassFileName,'file','y');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('u80u80d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cheb1mag';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+//------------------------------------
+//---- Class CHEB2MAG --------------------
+//------------------------------------
+ClassName = 'CHEB2MAG';
+
+// --- 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(4).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(4).SZ(2)',ClassFileName,'file','y');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0d0d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+//PrintStringInfo('u80u80d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'cheb2mag';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+
+//------------------------------------
+//---- Class SINC --------------------
+//------------------------------------
+ClassName = 'SINC';
+
+// --- 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');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('z2'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sinc';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+//------------------------------------
+//---- Class SINCD --------------------
+//------------------------------------
+ClassName = 'SINCD';
+
+// --- 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= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_ADD(FA_MUL(''8'',IN(1).VAL),''1'')',ClassFileName,'file','y');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('u80u80'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'sincd';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+//------------------------------------
+//---- Class FSFIRLIN --------------------
+//------------------------------------
+ClassName = 'FSFIRLIN';
+
+// --- 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= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_FSFIRLIN_SZ(IN(1).SZ(2))',ClassFileName,'file','y');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'fsfirlin';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+
+//------------------------------------
+//---- Class %K --------------------
+//------------------------------------
+ClassName = 'modk';
+
+// --- 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');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d2'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'modk';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class FILT_SINC --------------------
+//------------------------------------
+ClassName = 'FILT_SINC';
+
+// --- 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= ''d''',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= IN(1).VAL',ClassFileName,'file','y');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'filt_sinc';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class FFILT --------------------
+//------------------------------------
+ClassName = 'FFILT';
+
+// --- 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)= IN(2).VAL',ClassFileName,'file','y');
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('g2d0d0d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'ffilt';
+PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y');
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
+INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
+
+
+
+//------------------------------------
+//---- Class %SN --------------------
+//------------------------------------
+ClassName = 'modsn';
+
+// --- 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_MODSN(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_MODSN(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_MODSN(IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_MODSN(IN(1).SZ(1))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_MODSN(IN(1).SZ(2))',ClassFileName,'file','y');
+
+
+
+
+
+
+ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
+PrintStringInfo('d0d0'+ArgSeparator+'d0',ClassFileName,'file','y');
+PrintStringInfo('z0d0'+ArgSeparator+'z0',ClassFileName,'file','y');
+PrintStringInfo('d2d0'+ArgSeparator+'d2',ClassFileName,'file','y');
+PrintStringInfo('z2d0'+ArgSeparator+'z2',ClassFileName,'file','y');
+
+
+// --- Annotation Function And Function List Function. ---
+FunctionName = 'modsn';
+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
// /////////////////////////////////////////////
diff --git a/2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci b/2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci
index abe813cc..3c682bf8 100644
--- a/2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci
+++ b/2.3-1/macros/ToolInitialization/INIT_GenSharedInfo.sci
@@ -1,4 +1,4 @@
-function SharedInfo = INIT_GenSharedInfo(RunMode,UserScilabMainFile,TotTempScalarVars,EnableTempVarsReuse,Sci2CLibMainHeaderFName,CopySciCodeIntoCCode,Target)
+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)
// -----------------------------------------------------------------
@@ -132,4 +132,6 @@ SharedInfo.Includelist = list(); //Maintains list of functions being used in cod
// 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_SCI2C.sci b/2.3-1/macros/ToolInitialization/INIT_SCI2C.sci
index 82533022..b6da9bd1 100644
--- a/2.3-1/macros/ToolInitialization/INIT_SCI2C.sci
+++ b/2.3-1/macros/ToolInitialization/INIT_SCI2C.sci
@@ -1,5 +1,5 @@
function [FileInfoDatFile,SharedInfoDatFile] = ...
- INIT_SCI2C(UserScilabMainFile, UserSciFilesPaths, SCI2COutputDir, RunMode,Target)
+ INIT_SCI2C(UserScilabMainFile, UserSciFilesPaths, SCI2COutputDir, RunMode,Target,Board_name)
// function [FileInfoDatFile,SharedInfoDatFile] = INIT_SCI2C(SCI2CInputPrmFile)
// -----------------------------------------------------------------
// #RNU_RES_B
@@ -68,7 +68,7 @@ OutCCCodeDir = SCI2CResultDir;
//-- FIXME : MainLibHeader and Verbose mode are (?) configurable
SharedInfo = INIT_GenSharedInfo(RunMode,UserScilabMainFile, ...
- TotTempScalarVars,EnableTempVarsReuse,"sci2clib.h", %t,Target);
+ TotTempScalarVars,EnableTempVarsReuse,"sci2clib.h", %t,Target,Board_name);
// ----------------------------
// --- Initialize FileInfo. ---
diff --git a/2.3-1/macros/ToolInitialization/ManageNextConversion.sci b/2.3-1/macros/ToolInitialization/ManageNextConversion.sci
index a1524766..b0d4337b 100644
--- a/2.3-1/macros/ToolInitialization/ManageNextConversion.sci
+++ b/2.3-1/macros/ToolInitialization/ManageNextConversion.sci
@@ -44,6 +44,8 @@ FlagContinueTranslation = 0;
// --- Finalize the current C code. ---
// ------------------------------------
C_FinalizeCode(FileInfo,SharedInfo);
+//PrintStringInfo(' hello',ReportFileName,'file','y');
+
// ------------------------------------------------
// --- Identify the next function to translate. ---
diff --git a/2.3-1/macros/ToolInitialization/lib b/2.3-1/macros/ToolInitialization/lib
index b4603969..4d03bdc5 100644
--- a/2.3-1/macros/ToolInitialization/lib
+++ b/2.3-1/macros/ToolInitialization/lib
Binary files differ
diff --git a/2.3-1/macros/cb_sci2c_gui.sci b/2.3-1/macros/cb_sci2c_gui.sci
index 62424b3d..2267c6cc 100644
--- a/2.3-1/macros/cb_sci2c_gui.sci
+++ b/2.3-1/macros/cb_sci2c_gui.sci
@@ -64,8 +64,13 @@ elseif or(get(gcbo, "tag")==["outformatradiostalone","outformatradioarduino","ou
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 ---
//
@@ -121,6 +126,66 @@ elseif get(gcbo, "tag")=="convertbtn" then
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;
@@ -132,6 +197,7 @@ elseif get(gcbo, "tag")=="convertbtn" then
// CCompilerPathStyle = "cygwin";
end
+
// -*- DEBUG ONLY -*-
//mprintf("UserScilabMainFile = {%s}\n", UserScilabMainFile);
@@ -140,8 +206,7 @@ elseif get(gcbo, "tag")=="convertbtn" then
//mprintf("RunMode = {%s}\n", RunMode);
//mprintf("CopySciCodeIntoCCode = {%d}\n", bool2s(CopySciCodeIntoCCode));
//mprintf("NativeBuild = {%s}\n", NativeBuild);
-
- scilab2c(UserScilabMainFile, UserSciCodeMainDir, UserSciFilesPaths, RunMode, NativeBuild,Target);
+ scilab2c(UserScilabMainFile, UserSciCodeMainDir, UserSciFilesPaths, RunMode, NativeBuild,Target,Board_name);
//
// --- sci2c help ---
//
diff --git a/2.3-1/macros/findDeps/getAllHeaders.sci b/2.3-1/macros/findDeps/getAllHeaders.sci
index 2c9d3196..762c9a32 100644
--- a/2.3-1/macros/findDeps/getAllHeaders.sci
+++ b/2.3-1/macros/findDeps/getAllHeaders.sci
@@ -60,7 +60,7 @@ function allHeaders = getAllHeaders(SharedInfo)
"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/linearAlgebra/includes/spec.h"
"src/c/matrixOperations/includes/matrixTranspose.h"
"src/c/matrixOperations/includes/determ.h"
"src/c/matrixOperations/includes/matrixMultiplication.h"
@@ -72,6 +72,10 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/matrixOperations/includes/kron.h"
"src/c/matrixOperations/includes/flipdim.h"
"src/c/matrixOperations/includes/norm.h"
+ "src/c/interpolation/includes/interp1.h"
+ "src/c/elementaryFunctions/includes/nextpow2.h"
+ "src/c/elementaryFunctions/includes/gcd.h"
+ "src/c/elementaryFunctions/includes/isreal.h"
"src/c/elementaryFunctions/includes/cos.h"
"src/c/elementaryFunctions/includes/fix.h"
"src/c/elementaryFunctions/includes/exp.h"
@@ -142,6 +146,9 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/string/includes/dynlib_string.h"
"src/c/string/includes/disp.h"
"src/c/string/includes/str.h"
+ "src/c/signalProcessing/includes/modk.h"
+ "src/c/signalProcessing/includes/idct.h"
+ "src/c/signalProcessing/includes/dct.h"
"src/c/signalProcessing/fft/fft_internal.h"
"src/c/signalProcessing/ifft/ifft_internal.h"
"src/c/signalProcessing/levin/levinUtils.h"
@@ -156,6 +163,18 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/signalProcessing/includes/lpc2cep.h"
"src/c/signalProcessing/includes/dynlib_signalprocessing.h"
"src/c/signalProcessing/includes/crossCorr.h"
+ "src/c/signalProcessing/includes/zpbutt.h"
+ "src/c/signalProcessing/includes/zpch1.h"
+ "src/c/signalProcessing/includes/zpch2.h"
+ "src/c/signalProcessing/includes/buttmag.h"
+ "src/c/signalProcessing/includes/cheb1mag.h"
+ "src/c/signalProcessing/includes/cheb2mag.h"
+ "src/c/signalProcessing/includes/sincd.h"
+ "src/c/signalProcessing/includes/fsfirlin.h"
+ "src/c/signalProcessing/includes/modk.h"
+ "src/c/signalProcessing/includes/filt_sinc.h"
+ "src/c/signalProcessing/includes/ffilt.h"
+ "src/c/signalProcessing/includes/modsn.h"
"src/c/implicitList/dynlib_implicitlist.h"
"src/c/implicitList/implicitList.h"
"src/c/differential_calculus/includes/ode.h"
@@ -166,6 +185,11 @@ function allHeaders = getAllHeaders(SharedInfo)
//"src/c/string/includes/strcmp.h"
"src/c/string/includes/strrev.h"
"src/c/string/includes/strrchr.h"
+ "src/c/string/includes/strchr.h"
+ "src/c/string/includes/ascii.h"
+ "src/c/string/includes/strspn.h"
+ "src/c/string/includes/strcspn.h"
+ "src/c/string/includes/strncpy.h"
"src/c/elementaryFunctions/includes/dec2bin.h"
"src/c/elementaryFunctions/includes/dec2hex.h"
"src/c/elementaryFunctions/includes/dec2oct.h"
@@ -187,14 +211,20 @@ function allHeaders = getAllHeaders(SharedInfo)
"src/c/elementaryFunctions/includes/factorial.h"
"src/c/elementaryFunctions/includes/primes.h"
"src/c/elementaryFunctions/includes/factor.h"
+ "src/c/elementaryFunctions/includes/gcd.h"
+ "src/c/elementaryFunctions/includes/lcm.h"
+ "src/c/elementaryFunctions/includes/sinc.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/svd.h"
+ "src/c/linearAlgebra/includes/hess.h"
+ "src/c/linearAlgebra/includes/sva.h"
"src/c/linearAlgebra/includes/rcond.h"];
-
+
//Header files required for "Arduino" output
Arduino_headers = [
@@ -207,7 +237,15 @@ function allHeaders = getAllHeaders(SharedInfo)
//"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/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"
@@ -216,8 +254,8 @@ function allHeaders = getAllHeaders(SharedInfo)
"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"
@@ -275,4 +313,9 @@ function allHeaders = getAllHeaders(SharedInfo)
allHeaders = cat(1,allHeaders,OpenCV_headers);
end
+ if(size(SharedInfo.Includelist) <> 0 & (mtlb_strcmp(part(SharedInfo.Includelist(1),1:5),'odefn') == %T))
+ disp("Hi")
+ allHeaders = cat(1,allHeaders,"thirdparty/includes/GSL");
+ end
+
endfunction
diff --git a/2.3-1/macros/findDeps/getAllInterfaces.sci b/2.3-1/macros/findDeps/getAllInterfaces.sci
index 885fa8aa..ecc102f1 100644
--- a/2.3-1/macros/findDeps/getAllInterfaces.sci
+++ b/2.3-1/macros/findDeps/getAllInterfaces.sci
@@ -32,7 +32,7 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"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/linearAlgebra/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"
@@ -61,6 +61,10 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"src/c/matrixOperations/interfaces/int_flipdim.h"
"src/c/matrixOperations/interfaces/int_permute.h"
"src/c/matrixOperations/interfaces/int_norm.h"
+ "src/c/interpolation/interfaces/int_interp1.h"
+ "src/c/elementaryFunctions/interfaces/int_nextpow2.h"
+ "src/c/elementaryFunctions/interfaces/int_gcd.h"
+ "src/c/elementaryFunctions/interfaces/int_isreal.h"
"src/c/elementaryFunctions/interfaces/int_asinh.h"
"src/c/elementaryFunctions/interfaces/int_atanh.h"
"src/c/elementaryFunctions/interfaces/int_sinh.h"
@@ -90,11 +94,11 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"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_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_logspace.h"
"src/c/elementaryFunctions/interfaces/int_cosh.h"
"src/c/elementaryFunctions/interfaces/int_uint8.h"
"src/c/elementaryFunctions/interfaces/int_int8.h"
@@ -114,6 +118,8 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"src/c/elementaryFunctions/interfaces/int_asech.h"
"src/c/elementaryFunctions/interfaces/int_asind.h"
"src/c/elementaryFunctions/interfaces/int_atand.h"
+ "src/c/elementaryFunctions/interfaces/int_gcd.h"
+ "src/c/elementaryFunctions/interfaces/int_lcm.h"
"src/c/statisticsFunctions/interfaces/int_mean.h"
"src/c/statisticsFunctions/interfaces/int_meanf.h"
"src/c/statisticsFunctions/interfaces/int_stdevf.h"
@@ -142,6 +148,9 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"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_modk.h"
+ "src/c/signalProcessing/interfaces/int_idct.h"
+ "src/c/signalProcessing/interfaces/int_dct.h"
"src/c/signalProcessing/interfaces/int_ifft.h"
"src/c/signalProcessing/interfaces/int_lpc2cep.h"
"src/c/signalProcessing/interfaces/int_cepstrum.h"
@@ -152,6 +161,18 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"src/c/signalProcessing/interfaces/int_fftshift.h"
"src/c/signalProcessing/interfaces/int_fft.h"
"src/c/signalProcessing/interfaces/int_lev.h"
+ "src/c/signalProcessing/interfaces/int_zpbutt.h"
+ "src/c/signalProcessing/interfaces/int_zpch1.h"
+ "src/c/signalProcessing/interfaces/int_zpch2.h"
+ "src/c/signalProcessing/interfaces/int_buttmag.h"
+ "src/c/signalProcessing/interfaces/int_cheb1mag.h"
+ "src/c/signalProcessing/interfaces/int_cheb2mag.h"
+ "src/c/signalProcessing/interfaces/int_sincd.h"
+ "src/c/signalProcessing/interfaces/int_fsfirlin.h"
+ "src/c/signalProcessing/interfaces/int_modk.h"
+ "src/c/signalProcessing/interfaces/int_filt_sinc.h"
+ "src/c/signalProcessing/interfaces/int_ffilt.h"
+ "src/c/signalProcessing/interfaces/int_modsn.h"
"src/c/implicitList/int_OpColon.h"
"src/c/differential_calculus/interfaces/int_ode.h"
"src/c/differential_calculus/interfaces/int_diffc.h"
@@ -161,6 +182,11 @@ function allInterfaces = getAllInterfaces(SharedInfo)
//"src/c/string/interfaces/int_strcmp.h"
"src/c/string/interfaces/int_strrev.h"
"src/c/string/interfaces/int_strrchr.h"
+ "src/c/string/interfaces/int_strchr.h"
+ "src/c/string/interfaces/int_ascii.h"
+ "src/c/string/interfaces/int_strspn.h"
+ "src/c/string/interfaces/int_strcspn.h"
+ "src/c/string/interfaces/int_strncpy.h"
"src/c/elementaryFunctions/interfaces/int_dec2base.h"
"src/c/elementaryFunctions/interfaces/int_base2dec.h"
"src/c/elementaryFunctions/interfaces/int_dec2bin.h"
@@ -182,12 +208,16 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"src/c/elementaryFunctions/interfaces/int_factorial.h"
"src/c/elementaryFunctions/interfaces/int_primes.h"
"src/c/elementaryFunctions/interfaces/int_factor.h"
+ "src/c/elementaryFunctions/interfaces/int_sinc.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_svd.h"
+ "src/c/linearAlgebra/interfaces/int_hess.h"
+ "src/c/linearAlgebra/interfaces/int_sva.h"
"src/c/linearAlgebra/interfaces/int_rcond.h"];
@@ -199,7 +229,14 @@ function allInterfaces = getAllInterfaces(SharedInfo)
"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_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 = [
diff --git a/2.3-1/macros/findDeps/getAllSources.sci b/2.3-1/macros/findDeps/getAllSources.sci
index 6daef0b9..8b513ea5 100644
--- a/2.3-1/macros/findDeps/getAllSources.sci
+++ b/2.3-1/macros/findDeps/getAllSources.sci
@@ -155,18 +155,18 @@ function allSources = getAllSources(SharedInfo)
"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/linearAlgebra/spec/cspeca.c"
+ "src/c/linearAlgebra/spec/dspeca.c"
+ "src/c/linearAlgebra/spec/sspeca.c"
+ "src/c/linearAlgebra/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/linearAlgebra/spec2/zspec2a.c"
+ "src/c/linearAlgebra/spec2/sspec2a.c"
+ "src/c/linearAlgebra/spec2/dspec2a.c"
+ "src/c/linearAlgebra/spec2/cspec2a.c"
"src/c/matrixOperations/trace/stracea.c"
"src/c/matrixOperations/trace/dtracea.c"
"src/c/matrixOperations/trace/ctracea.c"
@@ -334,6 +334,9 @@ function allSources = getAllSources(SharedInfo)
"src/c/matrixOperations/kron/skrona.c"
"src/c/matrixOperations/norm/dnormv.c"
"src/c/matrixOperations/norm/dnorma.c"
+ "src/c/elementaryFunctions/nextpow2/dnextpow2a.c"
+ "src/c/elementaryFunctions/isreal/sisreals.c"
+ "src/c/elementaryFunctions/isreal/disreals.c"
"src/c/elementaryFunctions/cos/dcosa.c"
"src/c/elementaryFunctions/cos/dcoss.c"
"src/c/elementaryFunctions/cos/scosa.c"
@@ -723,6 +726,8 @@ function allSources = getAllSources(SharedInfo)
"src/c/elementaryFunctions/bitset/u16bitsets.c"
"src/c/elementaryFunctions/bitget/u8bitgets.c"
"src/c/elementaryFunctions/bitget/u16bitgets.c"
+ "src/c/elementaryFunctions/linspace/slinspacea.c"
+ "src/c/elementaryFunctions/linspace/slinspaces.c"
"src/c/elementaryFunctions/linspace/dlinspaces.c"
"src/c/elementaryFunctions/linspace/dlinspacea.c"
"src/c/elementaryFunctions/logspace/dlogspaces.c"
@@ -787,6 +792,8 @@ function allSources = getAllSources(SharedInfo)
"src/c/elementaryFunctions/atand/datands.c"
"src/c/elementaryFunctions/atand/satanda.c"
"src/c/elementaryFunctions/atand/satands.c"
+ "src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcda.c"
+ "src/c/elementaryFunctions/discrete_mathematics/lcm/u8lcma.c"
"src/c/statisticsFunctions/max/dmaxa.c"
"src/c/statisticsFunctions/max/smaxa.c"
"src/c/statisticsFunctions/max/srowmaxa.c"
@@ -992,6 +999,15 @@ function allSources = getAllSources(SharedInfo)
"src/c/string/string/u16strings.c"
"src/c/string/string/i16stringa.c"
"src/c/string/string/i16strings.c"
+ "src/c/signalProcessing/modk/dmodka.c"
+ "src/c/signalProcessing/transforms/idct/sidcta.c"
+ "src/c/signalProcessing/transforms/idct/cidcta.c"
+ "src/c/signalProcessing/transforms/idct/zidcta.c"
+ "src/c/signalProcessing/transforms/idct/didcta.c"
+ "src/c/signalProcessing/transforms/dct/sdcta.c"
+ "src/c/signalProcessing/transforms/dct/cdcta.c"
+ "src/c/signalProcessing/transforms/dct/zdcta.c"
+ "src/c/signalProcessing/transforms/dct/ddcta.c"
"src/c/signalProcessing/fft/dfft2.c"
"src/c/signalProcessing/fft/cfftma.c"
"src/c/signalProcessing/fft/r2tx.c"
@@ -1057,6 +1073,22 @@ function allSources = getAllSources(SharedInfo)
"src/c/signalProcessing/hilbert/shilberts.c"
"src/c/signalProcessing/hilbert/dhilberta.c"
"src/c/signalProcessing/hilbert/dhilberts.c"
+ "src/c/signalProcessing/zpbutt/dzpbutts.c"
+ "src/c/signalProcessing/zpch1/dzpch1s.c"
+ "src/c/signalProcessing/zpch2/dzpch2s.c"
+ "src/c/signalProcessing/buttmag/dbuttmags.c"
+ "src/c/signalProcessing/cheb1mag/dcheb1mags.c"
+ "src/c/signalProcessing/cheb2mag/dcheb2mags.c"
+ "src/c/signalProcessing/sincd/dsincds.c"
+ "src/c/signalProcessing/sincd/u8sincds.c"
+ "src/c/signalProcessing/fsfirlin/dfsfirlina.c"
+ "src/c/signalProcessing/%k/dmodka.c"
+ "src/c/signalProcessing/filt_sinc/dfilt_sincs.c"
+ "src/c/signalProcessing/ffilt/gffilts.c"
+ "src/c/signalProcessing/%sn/dmodsns.c"
+ "src/c/signalProcessing/%sn/zmodsns.c"
+ "src/c/signalProcessing/%sn/dmodsna.c"
+ "src/c/signalProcessing/%sn/zmodsna.c"
"src/c/implicitList/zimplicitLists.c"
"src/c/implicitList/dimplicitLists.c"
"src/c/implicitList/cimplicitLists.c"
@@ -1085,6 +1117,12 @@ function allSources = getAllSources(SharedInfo)
//"src/c/string/strcmp/gstrcmps.c"
"src/c/string/strrev/gstrreva.c"
"src/c/string/strrchr/gstrrchra.c"
+ "src/c/string/strchr/gstrchra.c"
+ "src/c/string/ascii/gasciia.c"
+ "src/c/string/ascii/dasciia.c"
+ "src/c/string/strspn/gstrspna.c"
+ "src/c/string/strcspn/gstrcspna.c"
+ "src/c/string/strncpy/gstrncpya.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"
@@ -1203,6 +1241,12 @@ function allSources = getAllSources(SharedInfo)
"src/c/elementaryFunctions/Trigonometry/sech/zsechs.c"
"src/c/elementaryFunctions/Trigonometry/sech/csecha.c"
"src/c/elementaryFunctions/Trigonometry/sech/csechs.c"
+ "src/c/interpolation/interp1/sinterp13a.c"
+ "src/c/interpolation/interp1/dinterp13a.c"
+ "src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcds.c"
+ "src/c/elementaryFunctions/Trigonometry/sinc/dsinca.c"
+ "src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c"
+ "src/c/elementaryFunctions/discrete_mathematics/gcd/dgcda.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"
@@ -1218,6 +1262,11 @@ function allSources = getAllSources(SharedInfo)
"src/c/linearAlgebra/schur/dschura.c"
"src/c/linearAlgebra/schur/dgschura.c"
"src/c/linearAlgebra/balanc/dbalanca.c"
+ "src/c/linearAlgebra/svd/dsvda.c"
+ "src/c/linearAlgebra/svd/zsvda.c"
+ "src/c/linearAlgebra/hess/dhessa.c"
+ "src/c/linearAlgebra/sva/dsvaa.c"
+ "src/c/linearAlgebra/spec/dspec1a.c"
"src/c/linearAlgebra/rcond/drconda.c"];
//Files to be inserted only if output format selected is 'Arduino'.
@@ -1230,7 +1279,15 @@ function allSources = getAllSources(SharedInfo)
//"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/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 = [
diff --git a/2.3-1/macros/findDeps/getArduinoFiles.sci b/2.3-1/macros/findDeps/getArduinoFiles.sci
index aae8e500..97264575 100644
--- a/2.3-1/macros/findDeps/getArduinoFiles.sci
+++ b/2.3-1/macros/findDeps/getArduinoFiles.sci
@@ -23,6 +23,5 @@ function arduinoFiles = getArduinoFiles()
arduinoFiles = [
"src/c/scilab-arduino/default_files/setup_arduino.h"
- "src/c/scilab-arduino/default_files/Makefile"
"src/c/scilab-arduino/default_files/sci2c_arduino.ino"];
endfunction
diff --git a/2.3-1/macros/findDeps/lib b/2.3-1/macros/findDeps/lib
index 89bb5b29..a49dc793 100644
--- a/2.3-1/macros/findDeps/lib
+++ b/2.3-1/macros/findDeps/lib
Binary files differ
diff --git a/2.3-1/macros/lib b/2.3-1/macros/lib
index 3b1ed213..d818e184 100644
--- a/2.3-1/macros/lib
+++ b/2.3-1/macros/lib
Binary files differ
diff --git a/2.3-1/macros/runsci2c.sci b/2.3-1/macros/runsci2c.sci
index cefc0acd..2fc66be8 100644
--- a/2.3-1/macros/runsci2c.sci
+++ b/2.3-1/macros/runsci2c.sci
@@ -1,4 +1,4 @@
-function runsci2c(UserScilabMainFile, UserSciFilesPaths, SCI2COutputPath, Runmode, BuildTool,Target)
+function runsci2c(UserScilabMainFile, UserSciFilesPaths, SCI2COutputPath, Runmode, BuildTool,Target,Board_name)
// function runsci2c(SCI2CInputPrmFile)
// -----------------------------------------------------------------
// === hArtes/PoliBa/GAP SCI2C tool ===
@@ -51,7 +51,7 @@ disp(RunSci2CMainDir);
// --- Initialize the SCI2C tool directories and files. ---
[FileInfoDatFile,SharedInfoDatFile] = INIT_SCI2C(UserScilabMainFile, ...
- UserSciFilesPaths, SCI2COutputPath, RunMode, Target);
+ UserSciFilesPaths, SCI2COutputPath, RunMode, Target,Board_name);
// -- Load FileInfo and SharedInfo
@@ -176,6 +176,8 @@ if (Target == 'Arduino')
//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);
diff --git a/2.3-1/macros/sci2c_gui.sci b/2.3-1/macros/sci2c_gui.sci
index 6dbd4628..bee6fe43 100644
--- a/2.3-1/macros/sci2c_gui.sci
+++ b/2.3-1/macros/sci2c_gui.sci
@@ -38,7 +38,7 @@ uimenu("parent", h, "label", gettext("Sci2c help page"), "callback", "cb_sci2c_g
uimenu("parent", h, "label", gettext("About SCI2C tools..."), "callback", "cb_sci2c_gui", "tag", "about_sci2c_menu");
figw = 800;
-figh = 15*margin + btnh + 9*widgeth;
+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
@@ -79,7 +79,7 @@ optframe = uicontrol("parent", sci2cfig,...
"relief", "groove",...
"style", "frame",...
"units", "pixels",...
- "position", [margin 2*margin+btnh figw-2*margin 4*margin+6*widgeth],...
+ "position", [margin 2*margin+btnh figw-2*margin 7*margin+6*widgeth],...
"fontname", defaultfont,...
"fontunits", "points",...
"fontsize", 12,...
@@ -90,7 +90,7 @@ opttitle = uicontrol("parent", sci2cfig,...
"style", "text",...
"string", gettext("Options"),...
"units", "pixels",...
- "position", [2*margin 2*margin+btnh+4*margin+6*widgeth-8 50 18],...
+ "position", [2*margin 5*margin+btnh+4*margin+6*widgeth-8 50 18],...
"fontname", defaultfont,...
"fontunits", "points",...
"fontsize", 11,...
@@ -175,6 +175,33 @@ sciintocradiono = uicontrol("parent", sci2cfig,...
"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,...
@@ -240,7 +267,8 @@ outformatradiorpi = uicontrol("parent", sci2cfig,...
"max", 1, ...
"value", 0,...
"callback", "cb_sci2c_gui",...
- "tag", "outformatradiorpi");
+ "tag", "outformatradiorpi");
+
// --- Run mode option ---
runy = outformaty + margin + widgeth;
@@ -296,7 +324,7 @@ runradiogenlib = uicontrol("parent", sci2cfig,...
// --- Output directory ---
// ------------------------
// Frame
-optframemaxy = 2*margin+btnh + 4*margin+6*widgeth;
+optframemaxy = 5*margin+btnh + 4*margin+6*widgeth;
outframe = uicontrol("parent", sci2cfig,...
"relief", "groove",...
"style", "frame",...
diff --git a/2.3-1/macros/scilab2c.sci b/2.3-1/macros/scilab2c.sci
index 89dcd730..197c88b0 100644
--- a/2.3-1/macros/scilab2c.sci
+++ b/2.3-1/macros/scilab2c.sci
@@ -12,6 +12,7 @@
function scilab2c(varargin)
[lhs, rhs] = argn();
+
select rhs
//
// scilab2c()
@@ -35,6 +36,7 @@ function scilab2c(varargin)
RunMode = 'All';
BuildTool = getNativeBuildTool();
Target = "StandAlone"
+ //Board_name = "uno"
//
// scilab2c(UserScilabMainFile, CCodeOutputDir, UserSciFilesPaths)
//
@@ -55,6 +57,7 @@ function scilab2c(varargin)
RunMode = "All";
BuildTool = getNativeBuildTool();
Target = "StandAlone"
+ //Board_name = "uno"
//
// scilab2c(UserScilabMainFile, CCodeOutputDir, UserSciFilesPaths, RunMode)
//
@@ -79,6 +82,7 @@ function scilab2c(varargin)
RunMode = varargin(4);
BuildTool = getNativeBuildTool();
Target = "StandAlone"
+ //Board_name = "uno"
case 5
for i = 1:4
if typeof(varargin(i)) <> "string"
@@ -104,6 +108,7 @@ function scilab2c(varargin)
RunMode = varargin(4);
BuildTool = varargin(5);
Target = "StandAlone"
+ //Board_name = "uno"
case 6
for i = 1:4
if typeof(varargin(i)) <> "string"
@@ -133,6 +138,41 @@ function scilab2c(varargin)
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
@@ -160,7 +200,7 @@ error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),
if (userchoice == 1)
// --- LAUNCH SCI2C ---
- runsci2c(UserScilabMainFile, UserSciFilesPaths, CCodeOutputDir, RunMode, BuildTool,Target);
+ runsci2c(UserScilabMainFile, UserSciFilesPaths, CCodeOutputDir, RunMode, BuildTool,Target,Board_name);
end
endfunction
diff --git a/2.3-1/src/c/CACSD/includes/lqr.h b/2.3-1/src/c/CACSD/includes/lqr.h
index 062d6e41..5b20ee83 100644
--- a/2.3-1/src/c/CACSD/includes/lqr.h
+++ b/2.3-1/src/c/CACSD/includes/lqr.h
@@ -17,7 +17,7 @@
extern "C" {
#endif
-void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K);
+void dlqra(double* sys, int sys_rows, int sys_cols, double* Q, double* R, double* S, double* X, double* K);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/2.3-1/src/c/CACSD/interfaces/int_lqr.h b/2.3-1/src/c/CACSD/interfaces/int_lqr.h
index e6f534fc..8deba90b 100644
--- a/2.3-1/src/c/CACSD/interfaces/int_lqr.h
+++ b/2.3-1/src/c/CACSD/interfaces/int_lqr.h
@@ -16,7 +16,14 @@
extern "C" {
#endif
-#define ss2lqrd2d2(in1,size1,out1,out2) dlqra(in1,size1[0],size1[1],out1,out2);
+#define ss2lqrd2d2(in1,size1,out1,out2) dlqra(in1,size1[0],size1[1],NULL,\
+ NULL,NULL,out1,out2);
+
+#define ss2d2d2lqrd2d2(in1,size1,in2,size2,in3,size3,out1,out2) dlqra(in1,\
+ size1[0],size1[1],in2,in3,NULL,out1,out2);
+
+#define ss2d2d2d2lqrd2d2(in1,size1,in2,size2,in3,size3,in4,size4,out1,out2) \
+ dlqra(in1,size1[0],size1[1],in2,in3,in4,out1,out2);
#ifdef __cplusplus
} /* extern "C" */
diff --git a/2.3-1/src/c/CACSD/lqe/dlqea.c b/2.3-1/src/c/CACSD/lqe/dlqea.c
index 63f8d62d..e0be5b34 100644
--- a/2.3-1/src/c/CACSD/lqe/dlqea.c
+++ b/2.3-1/src/c/CACSD/lqe/dlqea.c
@@ -54,7 +54,7 @@ void dlqea(double* sys, int sys_rows, int sys_cols, double* X, double* K)
/*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);
+ dlqra(sys_lqr,sys_lqr_rows,sys_lqr_cols,NULL,NULL,NULL,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/dlqra.c b/2.3-1/src/c/CACSD/lqr/dlqra.c
index 02ac1504..1440c3a8 100644
--- a/2.3-1/src/c/CACSD/lqr/dlqra.c
+++ b/2.3-1/src/c/CACSD/lqr/dlqra.c
@@ -22,7 +22,8 @@
#include "schur.h"
#include "matrixDivision.h"
-void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
+void dlqra(double* sys, int sys_rows, int sys_cols, double* Q, double* R, \
+ double* S, double* K, double* X)
{
int no_of_states, no_of_inputs, no_of_outputs, dom = 1;
int row,col;
@@ -32,7 +33,7 @@ void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
double *A, *B, *C, *D;
double *B_t, *C_t, *D_t;
- double *Q, *R, *S;
+ //double *Q, *R, *S;
double *Ri, *LA, *LE;
double *BRi, *StRi, *S_t;
double *buf1, *buf2, *buf3, *buf4, *buf5, *buf6;
@@ -90,20 +91,29 @@ void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
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);
+ if(Q == NULL)
+ {/*If Q is not provided*/
+ Q = (double*) malloc (no_of_states*no_of_states*sizeof(double));
+ dmulma(C_t,no_of_states,no_of_outputs,C,no_of_outputs,no_of_states,Q);
+ }
+
+ if(R == NULL)
+ {/*If R is not provided*/
+ R = (double*) malloc (no_of_inputs*no_of_inputs*sizeof(double));
+ dmulma(D_t,no_of_inputs,no_of_outputs,D,no_of_outputs,no_of_inputs,R);
+ }
- /*Free up unwanted variables*/
+ if(S == NULL)
+ {/*If Q is not provided*/
+ S = (double*) malloc (no_of_inputs*no_of_states*sizeof(double));
+ 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);
@@ -177,8 +187,8 @@ void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
/*Freeup umwanted variables*/
free(A);
- free(Q);
- free(R);
+ //free(Q);
+ //free(R);
free(BRi);
free(S_t);
free(StRi);
@@ -278,7 +288,7 @@ void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
}
- free(Q);
+ //free(Q);
free(BRi);
free(S_t);
free(StRi);
@@ -316,7 +326,7 @@ void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
/*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);
+ dmulma(buf3,no_of_inputs,no_of_states,B,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*/
@@ -333,14 +343,14 @@ void dlqra(double* sys, int sys_rows, int sys_cols, double* X, double* K)
free(A);
free(B);
- free(R);
+ //free(R);
free(buf5);
free(buf6);
}
free(B_t);
- free(S);
+ //free(S);
free(wsmall);
free(X12);
free(phi12);
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/dsinca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/dsinca.c
new file mode 100644
index 00000000..0cd24e96
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/dsinca.c
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "sinc.h"
+#define PI 3.14159265358979
+void dsinca(double* sample,int size,double* oup)
+{
+ int j;
+ for(j=0;j<size;j++)
+ {
+ if(sample[j]==0)
+ {
+ oup[j]=1;
+ }
+ else
+ {
+ oup[j]=(sin(sample[j]))/(sample[j]);
+ }
+ }
+}
+/*
+int main()
+{
+ int n;
+ printf("Enter the length of the array");
+ scanf("%d",&n);
+ double arr[100000];
+ int i;
+ printf("Now enter the element of the array");
+ for(i=0;i<n;i++)
+ {
+ scanf("%ld",&arr[i]);
+ }
+ sinc(arr[],n);
+}
+*/
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/int_sinc.h b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/int_sinc.h
new file mode 100644
index 00000000..0dc969de
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/int_sinc.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_SINC_H__
+#define __INT_SINC_H__
+
+#define d2sincd2(sample,size,oup) dsinca(sample,size,oup)
+
+#endif /* !__INT_SINC_H__! */
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/sinc.h b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/sinc.h
new file mode 100644
index 00000000..6a5c315b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/sinc.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __SINC_H__
+#define __SINC_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dsinca(double* sample,int size,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __SINC_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.c
new file mode 100644
index 00000000..ad7d095b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/Trigonometry/sinc/zsinca.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "sinc.h"
+#include "sin.h"
+#include "doubleComplex.h"
+void zsinca(doubleComplex* sample,int size,doubleComplex* oup)
+{
+ int j;
+ for(j=0;j<size;j++)
+ {
+ if(sample[j]==0)
+ {
+ oup[j]==DoubleComplex(1,0);
+ }
+ else
+ {
+ oup[j]=zsins(sample[j])/sample[j];
+ }
+ }
+}
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/dgcda.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/dgcda.c
new file mode 100644
index 00000000..a32ed773
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/dgcda.c
@@ -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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "gcd.h"
+#include "types.h"
+
+void dgcda(double *in,int size,double *out)
+{
+ double a=in[0];
+ double b=in[1];
+ while(a!=b && a!=0 && b!=0)
+ {
+ if(a>b)
+ {
+ a=a-b;
+ }
+ else
+ {
+ b=b-a;
+ }
+ }
+ out[0]=b;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcda.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcda.c
new file mode 100644
index 00000000..3d586232
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcda.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+/* This is the "gcd" function , which takes two input. first
+ one is the array and the second one is the length of the array.
+ Now to calculate the gcd of two elements we fin the maximum of
+ the two elements, and then iterate from maximum value down to 1,
+ and check whether the particular value divides the two elements.
+ And in this way we can calculate the gcd of the whole array.
+*/
+#include "gcd.h"
+uint8 u8gcdua(uint8* in,int size)
+{
+
+ int temp;
+ if(size==1)
+ {
+ temp=*in;
+ }
+ else
+ {
+ int x=*in;
+ int y=*(in+1);
+ int max=(x>y)?x:y;
+ for(int i=max;i>=1;i--)
+ {
+ if(x%i==0 && y%i==0)
+ {
+ temp=i;
+ break;
+ }
+ }
+ for(int j=2;j<size;j++)
+ {
+ x=temp;
+ y=*(in+j);
+ max=(x>y)?x:y;
+ for(int i=max;i>=1;i--)
+ {
+ if(x%i==0 && y%i==0)
+ {
+ temp=i;
+ break;
+ }
+ }
+ }
+}
+
+ return temp;
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcds.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcds.c
new file mode 100644
index 00000000..75f831fc
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/gcd/u8gcds.c
@@ -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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "gcd.h"
+#include "types.h"
+
+int8 u8gcds(int8 *in,int size)
+{
+ int a=in[0];
+ int b=in[1];
+ while(a!=b && a!=0 && b!=0)
+ {
+ if(a>b)
+ {
+ a=a-b;
+ }
+ else
+ {
+ b=b-a;
+ }
+ }
+ return b;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/discrete_mathematics/lcm/u8lcma.c b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/lcm/u8lcma.c
new file mode 100644
index 00000000..56856e43
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/discrete_mathematics/lcm/u8lcma.c
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+/* This is the "lcm" function, accepting two inputs which are the array of integers
+ and second the size of the array. The algorithm works like this:
+ We take a temproary variable and store the lcm of the first two elements of the
+ array in it. Now using this temproary variable we recursively fin the lcm of
+ the whole array.
+ Now to fin the lcm of two elements we fin the maximum of the two elements and
+ check whether it is divisible by both the elements, if the condition is true we
+ get the lcm, else increase the maximum value by itself unless we get the lcm.
+*/
+#include "lcm.h"
+uint8 u8lcma(uint8* in,int size)
+{
+ long long int lcm_temp;
+ if(size==1)
+ {
+ lcm_temp=*in;
+ }
+ else
+ {
+
+ int x1=*in;
+ int x2=*(in+1);
+ long long int max=(x1>x2)?x1:x2;
+ long long int i=max;
+ while(1)
+ {
+ if(i%x1==0 && i%x2==0)
+ {
+ lcm_temp=i;
+ break;
+ }
+ else
+ i+=max;
+ }
+ for(int j=2;j<size;j++)
+ {
+ x1=lcm_temp;
+ x2=*(in+j);
+ max=(x1>x2)?x1:x2;
+ i=max;
+ while(1)
+ {
+ if(i%x1==0 && i%x2==0)
+ {
+ lcm_temp=i;
+ break;
+ }
+ else
+ i+=max;
+ }
+ }
+
+ }
+ return lcm_temp;
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/gcd.h b/2.3-1/src/c/elementaryFunctions/includes/gcd.h
new file mode 100644
index 00000000..179eea0e
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/gcd.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __GCD_H__
+#define __GCD_H__
+#include "types.h"
+
+ #ifdef __cplusplus
+ extern "C"{
+ #endif
+
+uint8 u8gcda(uint8* in,int size);
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__GCD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/includes/isreal.h b/2.3-1/src/c/elementaryFunctions/includes/isreal.h
new file mode 100644
index 00000000..0183ebce
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/isreal.h
@@ -0,0 +1,30 @@
+/*
+ * 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 __ISREAL_H__
+#define __ISREAL_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+float sisreals(float a);
+
+double disreals(double a);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/includes/lcm.h b/2.3-1/src/c/elementaryFunctions/includes/lcm.h
new file mode 100644
index 00000000..3a3e66fb
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/lcm.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __LCM_H__
+#define __LCM_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint8 u8lcma(uint8* in,int size);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__LCM_H__*/
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/linspace.h b/2.3-1/src/c/elementaryFunctions/includes/linspace.h
index 92fe10e5..62d45015 100644
--- a/2.3-1/src/c/elementaryFunctions/includes/linspace.h
+++ b/2.3-1/src/c/elementaryFunctions/includes/linspace.h
@@ -21,8 +21,11 @@ extern "C" {
EXTERN_ELEMFUNCT void dlinspaces(double low_limit,double up_limit,double range_num, double* out);
+EXTERN_ELEMFUNCT void slinspaces(float low_limit,float up_limit,float range_num, float* out);
+
EXTERN_ELEMFUNCT void dlinspacea(double *low_limit,int row,double *up_limit,double range_num, double* out);
+EXTERN_ELEMFUNCT void slinspacea(float *low_limit,int row,float *up_limit,float range_num, float* out);
diff --git a/2.3-1/src/c/elementaryFunctions/includes/nextpow2.h b/2.3-1/src/c/elementaryFunctions/includes/nextpow2.h
new file mode 100644
index 00000000..c86bea01
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/nextpow2.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __NEXTPOW2_H__
+#define __NEXTPOW2_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dnextpow2a(double *in,int size,double *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
+
diff --git a/2.3-1/src/c/elementaryFunctions/includes/sec.h b/2.3-1/src/c/elementaryFunctions/includes/sec.h
index 96061583..a04c5f73 100644
--- a/2.3-1/src/c/elementaryFunctions/includes/sec.h
+++ b/2.3-1/src/c/elementaryFunctions/includes/sec.h
@@ -14,7 +14,7 @@
#include "dynlib_elementaryfunctions.h"
#include "floatComplex.h"
#include "doubleComplex.h"
-#include <complex.h>
+//#include <complex.h>
#include "types.h"
#ifdef __cplusplus
diff --git a/2.3-1/src/c/elementaryFunctions/includes/sinc.h b/2.3-1/src/c/elementaryFunctions/includes/sinc.h
new file mode 100644
index 00000000..8bc98d28
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/includes/sinc.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __SINC_H__
+#define __SINC_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dsinca(double* sample,int size,double* oup);
+void zsinca(doubleComplex* sample,int size,doubleComplex* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __SINC_H__ */
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_gcd.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_gcd.h
new file mode 100644
index 00000000..f3e117c5
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_gcd.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_GCD_H__
+#define __INT_GCD_H__
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define u82gcdu80(in,size) u8gcda(in,size[1])
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /*__INT_GCD_H__*/
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_isreal.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_isreal.h
new file mode 100644
index 00000000..cebbf6db
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_isreal.h
@@ -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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#ifndef __INT_ISREAL_H__
+#define __INT_ISREAL_H__
+
+#define s0isreals0(in) sisreals(in)
+
+#define d0isreald0(in) disreals(in)
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_lcm.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_lcm.h
new file mode 100644
index 00000000..2ef1a081
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_lcm.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+
+
+#ifndef __INT_LCM_H__
+#define __INT_LCM_H__
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+#define u82lcmu80(in,size) u8lcma(in,size[1])
+
+ #ifdef __cplusplus
+ } /* extern "C" */
+ #endif
+
+#endif /* !__INT_LCM_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
index f8af947a..15ea2696 100644
--- a/2.3-1/src/c/elementaryFunctions/interfaces/int_linspace.h
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_linspace.h
@@ -15,6 +15,10 @@
#define d0d0d0linspaced2(in1,in2,in3,out) dlinspaces(in1,in2,in3,out)
+#define s0s0s0linspaces2(in1,in2,in3,out) slinspaces(in1,in2,in3,out)
+
#define d2d2d0linspaced2(in1,size1,in2,size2,in3,out) dlinspacea(in1,size1[0],in2,in3,out)
+#define s2s2s0linspaces2(in1,size1,in2,size2,in3,out) slinspacea(in1,size1[0],in2,in3,out)
+
#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_nextpow2.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_nextpow2.h
new file mode 100644
index 00000000..6ae4747b
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_nextpow2.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+
+#ifndef __INT_NEXTPOW2_H__
+#define __INT_NEXTPOW2_H__
+
+
+#include "nextpow2.h"
+
+#define d0nextpow2d0(in,size,out) dnextpow2a(in,size[0]*size[1],out)
+
+#define d2nextpow2d2(in,size,out) dnextpow2a(in,size[0]*size[1],out)
+
+#endif
diff --git a/2.3-1/src/c/elementaryFunctions/interfaces/int_sinc.h b/2.3-1/src/c/elementaryFunctions/interfaces/int_sinc.h
new file mode 100644
index 00000000..35a519db
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/interfaces/int_sinc.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_SINC_H__
+#define __INT_SINC_H__
+
+#define d2sincd2(sample,size,oup) dsinca(sample,size[1],oup)
+#define z2sincz2(sample,size,oup) zsinca(sample,size[1],oup)
+
+#endif /* !__INT_SINC_H__! */
diff --git a/2.3-1/src/c/elementaryFunctions/isreal/disreals.c b/2.3-1/src/c/elementaryFunctions/isreal/disreals.c
new file mode 100644
index 00000000..8c7c8201
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/isreal/disreals.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "isreal.h"
+
+double disreals(double a){
+ return 1;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/isreal/sisreals.c b/2.3-1/src/c/elementaryFunctions/isreal/sisreals.c
new file mode 100644
index 00000000..4b93c02c
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/isreal/sisreals.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "isreal.h"
+
+float sisreals(float a){
+ return 1;
+}
diff --git a/2.3-1/src/c/elementaryFunctions/linspace/slinspacea.c b/2.3-1/src/c/elementaryFunctions/linspace/slinspacea.c
new file mode 100644
index 00000000..38af3942
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/linspace/slinspacea.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include <stdlib.h>
+#include "linspace.h"
+
+void slinspacea(float *low_limit,int _row,float *up_limit,float range_num,float *out)
+{
+ int i,j,k;
+ float temp;
+ float *step_iterate; /* for each row the spacing between two values is different.*/
+ step_iterate = (float*) malloc((float)_row*sizeof(float));
+ 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 < (float)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 == (float)range_num-1 )
+ {
+ out[(_row*k)+j] = (float)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/slinspaces.c b/2.3-1/src/c/elementaryFunctions/linspace/slinspaces.c
new file mode 100644
index 00000000..2404f4de
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/linspace/slinspaces.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include "linspace.h"
+void slinspaces(float low_limit,float up_limit,float range_num,float *out)
+{
+ int j;
+ float 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<(float)range_num; j++)
+ {
+ out[j] = temp + step_iterate;
+ temp = out[j];
+ if(j == (float)range_num-1 )
+ {
+ out[j] = (float)up_limit; /* Last value of output is equal to up_limit value*/
+ }
+ }
+
+
+
+}
+
diff --git a/2.3-1/src/c/elementaryFunctions/nextpow2/dnextpow2a.c b/2.3-1/src/c/elementaryFunctions/nextpow2/dnextpow2a.c
new file mode 100644
index 00000000..46f7eb80
--- /dev/null
+++ b/2.3-1/src/c/elementaryFunctions/nextpow2/dnextpow2a.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: Ukasha Noor
+ Email: toolbox@scilab.in
+*/
+
+#include "nextpow2.h"
+#include <math.h>
+
+void dnextpow2a(double *in,int size,double *out)
+{
+ int i,j,s;
+ double k;
+ i=2;
+ for(s=0;s<size;s++)
+ {
+ j=-1;
+ do{
+ j++;
+ k=pow(i,j);
+ }while(in[s]>k);
+ out[s]=j;
+ }
+}
diff --git a/2.3-1/src/c/interpolation/includes/interp1.h b/2.3-1/src/c/interpolation/includes/interp1.h
new file mode 100644
index 00000000..738bfe67
--- /dev/null
+++ b/2.3-1/src/c/interpolation/includes/interp1.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#ifndef __INTERP1_H__
+#define __INTERP1_H__
+
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//void dinterp13a(double *x,double *fx,double *q,int size,double *out);
+void dinterp13a(double *x,int size1,double *fx,int size2,double *q,int size3,char *a,int size4,double *out);
+
+void sinterp13a(float *x,int size1,float *fx,int size2,float *q,int size3,char *a,int size4,float *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/2.3-1/src/c/interpolation/interfaces/int_interp1.h b/2.3-1/src/c/interpolation/interfaces/int_interp1.h
new file mode 100644
index 00000000..07d8ece4
--- /dev/null
+++ b/2.3-1/src/c/interpolation/interfaces/int_interp1.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* THIS IS AN AUTOMATICALLY GENERATED FILE : DO NOT EDIT BY HAND. */
+
+
+#ifndef __INT_INTERP1_H__
+#define __INT_INTERP1_H__
+
+#include "interp1.h"
+#include <string.h>
+
+#define d2d2d2interp1d2(x,size1,fx,size2,q,size3,out) dinterp13a(x,size1[0]*size1[1],fx,size2[0]*size2[1],q,size3[0]*size3[1],"linear",6,out)
+
+#define d2d2d2g2interp1d2(x,size1,fx,size2,q,size3,ch,size4,out) dinterp13a(x,size1[0]*size1[1],fx,size2[0]*size2[1],q,size3[0]*size3[1],ch,size4[0]*size4[1],out)
+
+#define s2s2s2interp1s2(x,size1,fx,size2,q,size3,out) sinterp13a(x,size1[0]*size1[1],fx,size2[0]*size2[1],q,size3[0]*size3[1],"linear",6,out)
+
+#define s2s2s2g2interp1s2(x,size1,fx,size2,q,size3,ch,size4,out) sinterp13a(x,size1[0]*size1[1],fx,size2[0]*size2[1],q,size3[0]*size3[1],ch,size4[0]*size4[1],out)
+
+
+#endif
+
diff --git a/2.3-1/src/c/interpolation/interp1/dinterp13a.c b/2.3-1/src/c/interpolation/interp1/dinterp13a.c
new file mode 100644
index 00000000..7b755e1c
--- /dev/null
+++ b/2.3-1/src/c/interpolation/interp1/dinterp13a.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "interp1.h"
+#include <string.h>
+
+void dinterp13a(double *x,int size1,double *fx,int size2,double *q,int size3,char *ch,int size4,double *out)
+{
+ int i,j,k,f;
+ double a,b;
+ if(strcmp(ch,"linear")==0)
+ {
+ for(i=0;i<size3;i++)
+ {
+ f=0;
+ for(j=0;j<size1;j++)
+ {
+ if(q[i]==x[j])
+ {
+ out[i]=fx[j];
+ f=1;
+ break;
+ }
+ }
+ if(f==0)
+ {
+ j=0;
+ while(q[i]>x[j])
+ {
+ j++;
+ }
+ a=x[j-1];
+ b=x[j];
+ out[i]=fx[j-1]+(q[i]-a)*((fx[j]-fx[j-1])/(b-a));
+ }
+ }
+ }
+ else if(strcmp(ch,"nearest")==0)
+ {
+ for(i=0;i<size3;i++)
+ {
+ f=0;
+ for(j=0;j<size1;j++)
+ {
+ if(q[i]==x[j])
+ {
+ out[i]=fx[j];
+ f=1;
+ break;
+ }
+ }
+ if(f==0)
+ {
+ j=0;
+ while(q[i]>x[j])
+ {
+ j++;
+ }
+ out[i]=fx[j];
+ }
+ }
+ }
+}
+
+
diff --git a/2.3-1/src/c/interpolation/interp1/sinterp13a.c b/2.3-1/src/c/interpolation/interp1/sinterp13a.c
new file mode 100644
index 00000000..b8cb0851
--- /dev/null
+++ b/2.3-1/src/c/interpolation/interp1/sinterp13a.c
@@ -0,0 +1,75 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "interp1.h"
+#include <string.h>
+
+void sinterp13a(float *x,int size1,float *fx,int size2,float *q,int size3,char *ch,int size4,float *out)
+{
+ int i,j,k,f;
+ float a,b;
+ if(strcmp(ch,"linear")==0)
+ {
+ for(i=0;i<size3;i++)
+ {
+ f=0;
+ for(j=0;j<size1;j++)
+ {
+ if(q[i]==x[j])
+ {
+ out[i]=fx[j];
+ f=1;
+ break;
+ }
+ }
+ if(f==0)
+ {
+ j=0;
+ while(q[i]>x[j])
+ {
+ j++;
+ }
+ a=x[j-1];
+ b=x[j];
+ out[i]=fx[j-1]+(q[i]-a)*((fx[j]-fx[j-1])/(b-a));
+ }
+ }
+ }
+ else if(strcmp(ch,"nearest")==0)
+ {
+ for(i=0;i<size3;i++)
+ {
+ f=0;
+ for(j=0;j<size1;j++)
+ {
+ if(q[i]==x[j])
+ {
+ out[i]=fx[j];
+ f=1;
+ break;
+ }
+ }
+ if(f==0)
+ {
+ j=0;
+ while(q[i]>x[j])
+ {
+ j++;
+ }
+ out[i]=fx[j];
+ }
+ }
+ }
+}
+
+
diff --git a/2.3-1/src/c/linearAlgebra/bdiag/dbdiaga.c b/2.3-1/src/c/linearAlgebra/bdiag/dbdiaga.c
new file mode 100644
index 00000000..fd455ba7
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/bdiag/dbdiaga.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
+ Author: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*This function performs the block-diagonalization of matrix A.*/
+
+/*--------------------------------------------------------------------------*/
+/* [Ab [,X [,bs]]]=bdiag(A [,rMax]) */
+/*--------------------------------------------------------------------------*/
+
+#include <stdio.h>
+#include "string.h"
+#include "stdlib.h"
+#include "lapack.h"
+
diff --git a/2.3-1/src/c/linearAlgebra/hess/dhessa.c b/2.3-1/src/c/linearAlgebra/hess/dhessa.c
new file mode 100644
index 00000000..57f81b35
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/hess/dhessa.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
+ Author: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*This function finds the hessenberg form of a matrix A.*/
+
+#include "hess.h"
+#include <stdio.h>
+#include "string.h"
+#include "stdlib.h"
+#include "lapack.h"
+#include "matrixTranspose.h"
+#include "matrixMultiplication.h"
+
+extern int dgehrd_(int *, int *,int *,double *,int *,double *,double *,int *,int *);
+extern int dorghr_(int *, int *,int *,double *,int *,double *,double *,int *,int *);
+
+
+void dhessa(double *in1,int size,int nout,double *out1, double *out2){
+ int i,j,k;
+ int N = size;
+ int ILO=1;
+ int IHI=N;
+ double *A;
+ int LDA=N;
+ double *TAU;
+ double *WORK;
+ int LWORK = N;
+ int INFO;
+ A = (double *)malloc((double)size*size*sizeof(double));
+ memcpy(A,in1,size*size*sizeof(double));
+ TAU = (double *)malloc((double)size*sizeof(double));
+ WORK = (double *)malloc((double)LWORK*sizeof(double));
+ dgehrd_(&N,&ILO,&IHI,A,&LDA,TAU,WORK,&N,&INFO);
+
+ for(i=0;i<N;i++)
+ for(j=0;j<N;j++)
+ out2[i+j*N] = A[i+j*N];
+
+ for(j=1;j<=N-2;j++){
+ for(i=j+2;i<=N;i++){
+ out2[(i-1)+(j-1)*N] = 0;
+ }
+ }
+
+ if(nout > 1){
+ dorghr_(&N,&ILO,&IHI,A,&LDA,TAU,WORK,&LWORK,&INFO);
+ for(i=0;i<N;i++)
+ for(j=0;j<N;j++)
+ out1[i+j*N] = A[i+j*N];
+ }
+
+ /*for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ if(i == j) out1[i+j*N]=1;
+ else out1[i+j*N]=0;
+ }
+ }
+ double result[size*size];
+ for(i=IHI-2;i>=ILO-1;i--){
+ tau = TAU[i];
+ double V[size],v[size],v1[size*size];
+ for(j=0;j<i;j++) V[j]=0;
+ V[j]=1*tau;
+ for(j=i+1;j<IHI;j++) V[j] = tau*A[j+i*N];
+ dtransposea (V,N,1,v);
+ dmulma(V,N,1,v,1,N,v1);
+ for(j=0;j<N;j++) for(k=0;k<N;k++) if(j == k) v1[j+k*N]--;
+ for(j=0;j<N;j++) for(k=0;k<N;k++) result[j+k*N] = out1[j+k*N];
+ dmulma(v1,N,N,result,N,N,out1);
+ }*/
+ //out2 = NULL;
+}
diff --git a/2.3-1/src/c/linearAlgebra/includes/hess.h b/2.3-1/src/c/linearAlgebra/includes/hess.h
new file mode 100644
index 00000000..b9c53ded
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/includes/hess.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: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __HESS_H__
+#define __HESS_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dhessa(double *in1,int size,int nout,double *out1,double *out2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__HESS_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/includes/spec.h b/2.3-1/src/c/linearAlgebra/includes/spec.h
new file mode 100644
index 00000000..3cd0b186
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/includes/spec.h
@@ -0,0 +1,59 @@
+/*
+ * 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);
+
+/*Edited by - Sandeep Gupta, IITB FOSSEE*/
+void dspec1a(double *in1,double *in2,int size,int nout,doubleComplex *out1,double *out2,doubleComplex *out3,doubleComplex *out4);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __SPEC_H__ */
diff --git a/2.3-1/src/c/linearAlgebra/includes/sva.h b/2.3-1/src/c/linearAlgebra/includes/sva.h
new file mode 100644
index 00000000..ea628a32
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/includes/sva.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: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __SVA_H__
+#define __SVA_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dsvaa(int ninp,double *in1,int row,int col,double in2,double *out1, \
+ double *out2,double *out3);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__SVA_H__*/
+
diff --git a/2.3-1/src/c/linearAlgebra/includes/svd.h b/2.3-1/src/c/linearAlgebra/includes/svd.h
new file mode 100644
index 00000000..260b87fb
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/includes/svd.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: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __SVD_H__
+#define __SVD_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dsvda(double *in1,int row,int col,double in2,double nout,double *out1, \
+ double *out2,double *out3);
+void zsvda(doubleComplex *in1,int row,int col,int in2,int nout, doubleComplex *out1,\
+ doubleComplex *out2,doubleComplex *out3);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__SVD_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/interfaces/int_hess.h b/2.3-1/src/c/linearAlgebra/interfaces/int_hess.h
new file mode 100644
index 00000000..fb2ca720
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/interfaces/int_hess.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: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_HESS_H__
+#define __INT_HESS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2hessd2(in1,size,out2) dhessa(in1,size[0],1,NULL,out2);
+#define d2hessd2d2(in1,size,out1,out2) dhessa(in1,size[0],2,out1,out2);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_HESS_H__*/
+
diff --git a/2.3-1/src/c/linearAlgebra/interfaces/int_spec.h b/2.3-1/src/c/linearAlgebra/interfaces/int_spec.h
new file mode 100644
index 00000000..8772a6a6
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/interfaces/int_spec.h
@@ -0,0 +1,79 @@
+/*
+ * 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
+ *
+ * Edited - Sandeep Gupta (FOSSEE) - IIT Bombay
+ */
+
+/* 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=(float *)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=(double *)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=(float *)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=(double *)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)
+
+/*Edited by Sandeep Gupta, IITB, FOSSEE Project.spec(A,B) */
+
+#define d2d2specz2(in1,size,in2,size2,out1) dspec1a(in1,in2,size[0],1,out1,NULL,NULL,NULL)
+#define d2d2specz2d2(in1,size,in2,size2,out1,out2) dspec1a(in1,in2,size[0],2,out1,out2,NULL,NULL)
+#define d2d2specz2d2z2(in1,size,in2,size2,out1,out2,out3) dspec1a(in1,in2,size[0],3,out1,out2,out3,NULL)
+#define d2d2specz2d2z2z2(in1,size,in2,size2,out1,out2,out3,out4) dspec1a(in1,in2,size[0],4,out1,out2,out3,out4)
+
+#endif /* !__INT_SPEC_H__ */
diff --git a/2.3-1/src/c/linearAlgebra/interfaces/int_sva.h b/2.3-1/src/c/linearAlgebra/interfaces/int_sva.h
new file mode 100644
index 00000000..4a2ec56b
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/interfaces/int_sva.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: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_SVA_H__
+#define __INT_SVA_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2svad2d2d2(in1,size,out1,out2,out3) dsvaa(1,in1,size[0],size[1],0,out1,out2,out3);
+#define d2d0svad2d2d2(in1,size1,in2,size2,out1,out2,out3) dsvaa(2,in1,size1[0],size1[1],in2,out1,out2,out3);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_SVA_H__*/
+
diff --git a/2.3-1/src/c/linearAlgebra/interfaces/int_svd.h b/2.3-1/src/c/linearAlgebra/interfaces/int_svd.h
new file mode 100644
index 00000000..449ee741
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/interfaces/int_svd.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: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_SVD_H__
+#define __INT_SVD_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define d2svdd2(in1,size1,out1) dsvda(in1,size1[0],size1[1],0,1,out1,NULL,NULL)
+#define d2g2svdd2d2d2(in1,size1,in2,size2,out1,out2,out3) dsvda(in1,size1[0],size1[1],1,3,out1,out2,out3);
+#define d2svdd2d2d2(in1,size1,out1,out2,out3) dsvda(in1,size1[0],size1[1],0,3,out1,out2,out3);
+#define z2svdz2(in1,size1,out2) zsvda(in1,size1[0],size1[1],0,1,NULL,out2,NULL);
+#define z2g2svdz2z2z2(in1,size1,in2,size2,out1,out2,out3) zsvda(in1,size1[0],size1[1],1,3,out1,out2,out3);
+#define z2svdz2z2z2(in1,size1,out1,out2,out3) zsvda(in1,size1[0],size1[1],0,3,out1,out2,out3);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_SVD_H__*/
diff --git a/2.3-1/src/c/linearAlgebra/pbig/pbig.c b/2.3-1/src/c/linearAlgebra/pbig/pbig.c
new file mode 100644
index 00000000..c13a942d
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/pbig/pbig.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
+ Author: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*This function finds the hessenberg form of a matrix A.*/
+
+#include "schur.h"
+#include <stdio.h>
+#include "string.h"
+#include "stdlib.h"
+#include "lapack.h"
+
+//Projection on eigensubspace associated with eigenvalues
+//with real part >= thres (flag='c') or with modulus >= thres (flag='d')
+//Projection is defined by Q*M. Eigenvalues of M*A*Q = eigenvalues
+//of A with real part >= thres (case 'c',...).
+//If [Q1,M1]== full rank factorization (fullrf) of eye-Q*M then evals of
+// M1*A*Q1 = evals of A with real part < thres (case 'c',...).
+// See also psmall.
+//!
+
+void dpbiga(double *in1,int N,double *in2,double *in3,double *out1,double *out2){
+
+
+
+
+}
diff --git a/2.3-1/src/c/linearAlgebra/schur/zgschura.c b/2.3-1/src/c/linearAlgebra/schur/zgschura.c
new file mode 100644
index 00000000..a49cbe51
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/schur/zgschura.c
@@ -0,0 +1,164 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*Fucntion to find generalised schur decomposition of given square complex matrices */
+
+#include "schur.h"
+#include "lapack.h"
+#include "stdlib.h"
+#include "string.h"
+#include <math.h>
+#include "doubleComplex.h"
+#include "matrixTranspose.h"
+
+/*flag --> 0: nothing
+ --> 1: continuous
+ --> 2: discrete
+*/
+
+lapack_logical selctg21( doubleComplex* in1, doubleComplex* in2, doubleComplex* in3);
+lapack_logical selctg22( doubleComplex* in1, doubleComplex* in2, doubleComplex* in3);
+
+doubleComplex dgschura(doubleComplex* in1, int size, doubleComplex* in2, int flag, int nout, \
+ doubleComplex* out1, doubleComplex* out2, doubleComplex* out3, doubleComplex* out4)
+{
+ char JOBVSL = 'N';
+ char JOBVSR = 'N';
+ char SORT = 'N';
+ int SDIM = 0;
+ int LDVSL = size, LDVSR = size;
+ int LWORK = 2*size, INFO;
+ doubleComplex *ALPHA, *BETA, *VSL, *VSR, *WORK;
+ double *RWORK;
+ int *BWORK;
+ doubleComplex ret = 0;
+ doubleComplex *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 = (doubleComplex*) malloc((doubleComplex) size*size*sizeof(doubleComplex));
+ buf2 = (doubleComplex*) malloc((doubleComplex) size*size*sizeof(doubleComplex));
+ ALPHA = (doubleComplex*) malloc((doubleComplex) size*sizeof(doubleComplex));
+ RWORK = (double *)malloc((double)8*size*sizeof(double));
+ BETA = (doubleComplex*) malloc((doubleComplex) size*sizeof(doubleComplex));
+ VSL = (doubleComplex*) malloc((doubleComplex) LDVSL*size*sizeof(doubleComplex));
+ VSR = (doubleComplex*) malloc((doubleComplex) LDVSR*size*sizeof(doubleComplex));
+ WORK = (doubleComplex*) malloc((doubleComplex) LWORK*sizeof(doubleComplex));
+ BWORK = (int*) malloc((doubleComplex) size*sizeof(doubleComplex));
+
+
+ memcpy(buf1,in1,size*size*sizeof(doubleComplex));
+ memcpy(buf2,in2,size*size*sizeof(doubleComplex));
+
+ zgges_(&JOBVSL,&JOBVSR,&SORT,selctg,&size,buf1,&size,buf2,&size,&SDIM, \
+ ALPHA,BETA,VSL,&LDVSL,VSR,&LDVSR,WORK,&LWORK,RWORK,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(doubleComplex));
+ memcpy(out2,buf2,size*size*sizeof(doubleComplex));
+ }
+ else
+ {
+ /*copy VSR to out1 and return SDIM */
+ memcpy(out1,VSR,size*size*sizeof(doubleComplex));
+ ret = SDIM;
+ }
+ }
+ else if(nout == 3)
+ {
+ /*copy VSL to out1, VSR to out2, return SDIM*/
+ memcpy(out1,VSL,size*size*sizeof(doubleComplex));
+ memcpy(out2,VSR,size*size*sizeof(doubleComplex));
+ ret = SDIM;
+ }
+ else if(nout == 4)
+ {
+ if(flag == 0)
+ {
+ /*copy in1 to out1 and in2 to out2*/
+ memcpy(out1,buf1,size*size*sizeof(doubleComplex));
+ memcpy(out2,buf2,size*size*sizeof(doubleComplex));
+ /*copy VSL to out3 and VSR to out4*/
+ memcpy(out3,VSL,size*size*sizeof(doubleComplex));
+ memcpy(out4,VSR,size*size*sizeof(doubleComplex));
+ }
+ else
+ {
+ /*copy in1 to out1 and in2 to out2*/
+ memcpy(out1,buf1,size*size*sizeof(doubleComplex));
+ memcpy(out2,buf2,size*size*sizeof(doubleComplex));
+ /*copy VSR to out3 and return SDIM*/
+ memcpy(out3,VSR,size*size*sizeof(doubleComplex));
+ ret = SDIM;
+ }
+ }
+ else /*nout = 5*/
+ {
+ /*copy in1 to out1 and in2 to out2*/
+ memcpy(out1,buf1,size*size*sizeof(doubleComplex));
+ memcpy(out2,buf2,size*size*sizeof(doubleComplex));
+ /*copy VSL to out3 and VSR to out4*/
+ memcpy(out3,VSL,size*size*sizeof(doubleComplex));
+ memcpy(out4,VSR,size*size*sizeof(doubleComplex));
+ /*return SDIM*/
+ ret = SDIM;
+ }
+
+ free(buf1);
+ free(buf2);
+ free(VSL);
+ free(VSR);
+ free(ALPHA);
+ free(BETA);
+ free(WORK);
+ free(BWORK);
+
+ return ret;
+}
+
+lapack_logical selctg21(doubleComplex* in1, doubleComplex* in2, doubleComplex* in3)
+{
+ if((sqrt(*in1**in1+*in2**in2)/ *in3) < 1)
+ return 1;
+ else
+ return 0;
+}
+
+lapack_logical selctg22(doubleComplex* in1, doubleComplex* in2, doubleComplex* in3)
+{
+ if((sqrt(*in1**in1+*in2**in2)/ *in3) < 1)
+ return 1;
+ else
+ return 0;
+}
diff --git a/2.3-1/src/c/linearAlgebra/spec/Makefile.am b/2.3-1/src/c/linearAlgebra/spec/Makefile.am
new file mode 100644
index 00000000..90dbd0aa
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/Makefile.in b/2.3-1/src/c/linearAlgebra/spec/Makefile.in
new file mode 100644
index 00000000..9c34c9e6
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/cspeca.c b/2.3-1/src/c/linearAlgebra/spec/cspeca.c
new file mode 100644
index 00000000..a2b6548b
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/dspec1a.c b/2.3-1/src/c/linearAlgebra/spec/dspec1a.c
new file mode 100644
index 00000000..28440be6
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/spec/dspec1a.c
@@ -0,0 +1,176 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+/*This function finds the hessenberg form of a matrix A.*/
+
+#include "spec.h"
+#include <stdio.h>
+#include "string.h"
+#include "stdlib.h"
+#include "lapack.h"
+#include "matrixTranspose.h"
+#include "matrixMultiplication.h"
+#include "doubleComplex.h"
+
+extern int dggev_(char *,char *,int *,double *,int *,double *,int *,double *,double *,double *,double *,int *,double *,int *,double *,int *,int *);
+
+void assembleEigenvectorsInPlace(int N,double *ALPHAI,double *EVreal,double *EVimg){
+ int j,i;
+ j=0;
+ while(j<N){
+ if(ALPHAI[j] == 0){
+ //printf(" * ");
+ j+=1;
+ }
+ else{
+ int ij;
+ int ij1;
+ for(i=0;i<N;i++){
+ ij = i+j*N;
+ ij1 = i+(j+1)*N;
+ EVimg[ij] = EVreal[ij1];
+ EVimg[ij1] = -EVreal[ij1];
+ EVreal[ij1] = EVreal[ij];
+ }
+ j+=2;
+ }
+ }
+}
+
+void dspec1a(double *in1,double *in2,int size,int nout,doubleComplex *out1,double *out2,doubleComplex *out3,doubleComplex *out4){
+
+ int i,j;
+ char JOBVL;
+ char JOBVR;
+ int N=size;
+
+ double *A;
+ int LDA=N;
+ A = (double *)malloc(N*N*sizeof(double));
+ memcpy(A,in1,N*N*sizeof(double));
+
+ double *B;
+ int LDB=N;
+ B = (double *)malloc(N*N*sizeof(double));
+ memcpy(B,in2,N*N*sizeof(double));
+
+ double *ALPHAR;
+ ALPHAR = (double *)malloc(N*sizeof(double));
+
+ double *ALPHAI;
+ ALPHAI = (double *)malloc(N*sizeof(double));
+
+ double *BETA;
+ BETA = (double *)malloc(N*sizeof(double));
+
+ double *VL;
+ VL = (double *)malloc(N*N*sizeof(double));
+
+ int LDVL=N;
+
+ double *VR;
+ VR = (double *)malloc(N*N*sizeof(double));
+ int LDVR=N;
+
+ int LWORK=8*N;
+
+ double *WORK;
+ WORK = (double *)malloc(LWORK*sizeof(double));
+
+ int INFO;
+ if(nout == 1){ /*out1 = spec(A,B)*/
+ JOBVL = 'N';
+ JOBVR = 'N';
+ dggev_(&JOBVL,&JOBVR,&N,A,&LDA,B,&LDB,ALPHAR,ALPHAI,BETA,VL,&LDVL,VR,&LDVR,WORK,&LWORK,&INFO);
+ for(i=0;i<N;i++){
+ out1[i] = DoubleComplex(ALPHAR[i]/BETA[i],ALPHAI[i]/BETA[i]);
+ }
+ }
+ else if(nout == 2){ /*[out1,out2] = spec(A,B)*/
+ JOBVL = 'N';
+ JOBVR = 'N';
+ dggev_(&JOBVL,&JOBVR,&N,A,&LDA,B,&LDB,ALPHAR,ALPHAI,BETA,VL,&LDVL,VR,&LDVR,WORK,&LWORK,&INFO);
+ for(i=0;i<N;i++){
+ out1[i] = DoubleComplex(ALPHAR[i],ALPHAI[i]);
+ }
+ memcpy(out2,BETA,N*sizeof(double));
+ }
+ else if(nout == 3){ /* [out1,out2,out3] = spec(A,B) */
+ JOBVL = 'N';
+ JOBVR = 'V';
+ dggev_(&JOBVL,&JOBVR,&N,A,&LDA,B,&LDB,ALPHAR,ALPHAI,BETA,VL,&LDVL,VR,&LDVR,WORK,&LWORK,&INFO);
+ for(i=0;i<N;i++){
+ out1[i] = DoubleComplex(ALPHAR[i],ALPHAI[i]);
+ }
+ memcpy(out2,BETA,N*sizeof(double));
+
+ /*Because lapack routine doesn't give result in actual format, \
+ so we have to change the VR little-bit and then return the function */
+
+ /*See the Scilab code || see the lapack subroutine libary - DGGEV where \
+ it is very explantory and explains all this.
+ */
+ double *EVimg;
+ EVimg = (double *)malloc(N*N*sizeof(double));
+ for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ EVimg[i+j*N] = 0;
+ }
+ }
+ assembleEigenvectorsInPlace(N,ALPHAI,VR,EVimg);
+ for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ out3[i+j*N] = DoubleComplex(VR[i+j*N],EVimg[i+j*N]);
+ }
+ }
+ }
+ else if(nout == 4){
+ JOBVL = 'V';
+ JOBVR = 'V';
+
+ dggev_(&JOBVL,&JOBVR,&N,A,&LDA,B,&LDB,ALPHAR,ALPHAI,BETA,VL,&LDVL,VR,&LDVR,WORK,&LWORK,&INFO);
+
+ for(i=0;i<N;i++){
+ out1[i] = DoubleComplex(ALPHAR[i],ALPHAI[i]);
+ }
+
+ memcpy(out2,BETA,N*sizeof(double));
+
+ double *EVimg;
+ EVimg = (double *)malloc(N*N*sizeof(double));
+ for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ EVimg[i+j*N] = 0;
+ }
+ }
+ assembleEigenvectorsInPlace(N,ALPHAI,VR,EVimg);
+ for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ out4[i+j*N] = DoubleComplex(VR[i+j*N],EVimg[i+j*N]);
+ }
+ }
+
+ double *EVimg1;
+ EVimg1 = (double *)malloc(N*N*sizeof(double));
+ for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ EVimg1[i+j*N] = 0;
+ }
+ }
+ assembleEigenvectorsInPlace(N,ALPHAI,VL,EVimg1);
+ for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ out3[i+j*N] = DoubleComplex(VL[i+j*N],EVimg1[i+j*N]);
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/linearAlgebra/spec/dspeca.c b/2.3-1/src/c/linearAlgebra/spec/dspeca.c
new file mode 100644
index 00000000..1131ecf2
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/sspeca.c b/2.3-1/src/c/linearAlgebra/spec/sspeca.c
new file mode 100644
index 00000000..50751a29
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/testDoubleSpec.c b/2.3-1/src/c/linearAlgebra/spec/testDoubleSpec.c
new file mode 100644
index 00000000..25c88065
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/testFloatSpec.c b/2.3-1/src/c/linearAlgebra/spec/testFloatSpec.c
new file mode 100644
index 00000000..9bd46adc
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/test_DoubleSpec/testDoubleSpec.vcxproj b/2.3-1/src/c/linearAlgebra/spec/test_DoubleSpec/testDoubleSpec.vcxproj
new file mode 100644
index 00000000..f696bff4
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters b/2.3-1/src/c/linearAlgebra/spec/test_DoubleSpec/testDoubleSpec.vcxproj.filters
new file mode 100644
index 00000000..dcdaea5c
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/test_FloatSpec/testFloatSpec.vcxproj b/2.3-1/src/c/linearAlgebra/spec/test_FloatSpec/testFloatSpec.vcxproj
new file mode 100644
index 00000000..0631bb40
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/test_FloatSpec/testFloatSpec.vcxproj.filters b/2.3-1/src/c/linearAlgebra/spec/test_FloatSpec/testFloatSpec.vcxproj.filters
new file mode 100644
index 00000000..2ba2e59f
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec/zspeca.c b/2.3-1/src/c/linearAlgebra/spec/zspeca.c
new file mode 100644
index 00000000..a2b1c25a
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/Makefile.am b/2.3-1/src/c/linearAlgebra/spec2/Makefile.am
new file mode 100644
index 00000000..5a357fa5
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/Makefile.in b/2.3-1/src/c/linearAlgebra/spec2/Makefile.in
new file mode 100644
index 00000000..6e46c059
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/cspec2a.c b/2.3-1/src/c/linearAlgebra/spec2/cspec2a.c
new file mode 100644
index 00000000..d3a4312f
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/dspec2a.c b/2.3-1/src/c/linearAlgebra/spec2/dspec2a.c
new file mode 100644
index 00000000..98b2c5ad
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/sspec2a.c b/2.3-1/src/c/linearAlgebra/spec2/sspec2a.c
new file mode 100644
index 00000000..d3ab00d5
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/testDoubleSpec2.c b/2.3-1/src/c/linearAlgebra/spec2/testDoubleSpec2.c
new file mode 100644
index 00000000..a090f028
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/testFloatSpec2.c b/2.3-1/src/c/linearAlgebra/spec2/testFloatSpec2.c
new file mode 100644
index 00000000..fb2bc255
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj b/2.3-1/src/c/linearAlgebra/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj
new file mode 100644
index 00000000..7c36943b
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters b/2.3-1/src/c/linearAlgebra/spec2/test_DoubleSpec2/testDoubleSpec2.vcxproj.filters
new file mode 100644
index 00000000..04f409dc
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/test_FloatSpec2/testFloatSpec2.vcxproj b/2.3-1/src/c/linearAlgebra/spec2/test_FloatSpec2/testFloatSpec2.vcxproj
new file mode 100644
index 00000000..f4154eb1
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters b/2.3-1/src/c/linearAlgebra/spec2/test_FloatSpec2/testFloatSpec2.vcxproj.filters
new file mode 100644
index 00000000..0c38d2f2
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/spec2/zspec2a.c b/2.3-1/src/c/linearAlgebra/spec2/zspec2a.c
new file mode 100644
index 00000000..e33ed897
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/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/linearAlgebra/sva/dsvaa.c b/2.3-1/src/c/linearAlgebra/sva/dsvaa.c
new file mode 100644
index 00000000..ee27eef7
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/sva/dsvaa.c
@@ -0,0 +1,92 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+
+ */
+#include "sva.h"
+#include "svd.h"
+#include "lapack.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "string.h"
+#include "matrixTranspose.h"
+
+#define eps 2.22044604925e-16
+
+void dsvaa(int ninp,double *in1,int row,int col,double in2,double *out1, \
+ double *out2,double *out3){
+
+ double tol;
+ double rk=0;
+ int N=col,M=row;
+ if(row == 0 && col == 0) return;
+ int i,j;
+ int arow; /*Actual row of given matrix*/
+ int acol; /*Actual col of given matrix*/
+
+ /* Calculation of svd of a given matrix */
+ double *U,*S,*V;
+ U = (double *)malloc((double)row*Min(row,col)*sizeof(double));
+ S = (double *)malloc((double)Min(row,col)*Min(row,col)*sizeof(double));
+ V = (double *)malloc((double)col*Min(row,col)*sizeof(double));
+
+ dsvda(in1,M,N,1,3,U,S,V);
+
+ if (ninp == 1){ /* [u,s,v] = sva(A) when input is only matrix */
+ tol = Max(row,col)*S[0]*eps;
+ rk = 0;
+ for(i=0;i<col;i++){
+ if(S[i+i*row] > tol){
+ rk+=1;
+ }
+ }
+ }
+ else{ /*[u,s,v] = sva(A,tol) when two input's are there */
+ tol = in2;
+ if(tol > 1){
+ rk = tol;
+ if(rk > Min(row,col)){
+ printf("ERROR: Wrong value for input argument !");
+ out1 = NULL;
+ out2 = NULL;
+ out3 = NULL;
+ return;
+ }
+ }
+ else{
+ rk = 0;
+ for(i=0;i<col;i++){
+ if(S[i+i*row] > tol){
+ rk+=1;
+ }
+ }
+ }
+ }
+ arow = M;
+ acol = Min(M,N);
+ for(i=0;i<arow;i++){
+ for(j=0;j<rk;j++){
+ out1[i+j*row]=U[i+j*arow];
+ }
+ }
+ arow = Min(M,N);
+ for(i=0;i<rk;i++){
+ for(j=0;j<rk;j++){
+ out2[i+j*(int)rk] = S[i+j*arow];
+ }
+ }
+ arow = N;
+ acol = Min(M,N);
+ for(i=0;i<arow;i++){
+ for(j=0;j<rk;j++){
+ out3[i+j*arow] = V[i+j*arow];
+ }
+ }
+}
diff --git a/2.3-1/src/c/linearAlgebra/svd/dsvda.c b/2.3-1/src/c/linearAlgebra/svd/dsvda.c
new file mode 100644
index 00000000..e6af3008
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/svd/dsvda.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: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+
+ */
+
+/*Funtion to find singular value decomposition of given matrix */
+
+#include "lapack.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "string.h"
+#include <math.h>
+#include "svd.h"
+#include "matrixTranspose.h"
+
+int min(int a,int b);
+int max(int a,int b);
+
+extern double dgesvd_(char*,char*,int*,int*,double*,int*,double*,double*,int*,\
+ double*,int*,double *,int*,int*);
+
+/* 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) */
+
+void dsvda(double *in1,int row,int col,double in2,double nout,double *out1, \
+ double *out2,double *out3){
+
+ char JOBU,JOBVT;
+ int j,k;
+ int LDU=1; /*Leading Dimension of U */
+ int LDVT=1; /*Leading Dimension of VT */
+ int M = row;
+ int N = col;
+ double *buf;
+ double *S,*U,*VT;
+ double *WORK;
+
+ if((nout > 1 && in2 == 1) && (M != N)){ /* [U,S,VT] = svd(x,'e') */
+ if(M > N){
+ JOBU = 'S';
+ JOBVT = 'A';
+ LDVT = N;
+ }
+ else{
+ JOBU = 'A';
+ JOBVT = 'S';
+ LDVT = min(M,N);
+ }
+ LDU = M;
+ U = (double*) malloc((double) (LDU)*min(M,N)*sizeof(double));
+ VT = (double*) malloc((double) (LDVT)*N*sizeof(double));
+ }
+ else if(nout > 1){ /* [U,S,VT = svd(x)] */
+ JOBU = 'A'; /*If JOBU = 'A', U contains the M-by-M orthogonal matrix U */
+ JOBVT = 'A'; /*JOBVT = 'A': all N rows of V**T are returned in the array VT;*/
+ LDU = M;
+ LDVT = N;
+ U = (double*) malloc((double) M*M*sizeof(double));
+ VT = (double*) malloc((double) N*N*sizeof(double));
+ }
+ else{ /* ans = svd(x) */
+ JOBU = 'N';
+ JOBVT = 'N';
+ }
+ int LDA = max(1,M);
+
+ /* Making a copy of input matrix */
+ buf = (double*) malloc((double)M*N*sizeof(double));
+ memcpy(buf,in1,M*N*sizeof(double));
+
+ S = (double*)malloc((double)min(col,row)*sizeof(double));
+
+ int LWORK = 5*min(M,N);
+ WORK = (double*)malloc((double)LWORK*sizeof(double));
+ int INFO = 0; /*For successful exit */
+
+ dgesvd_(&JOBU,&JOBVT,&M,&N,buf,&LDA,S,U,&LDU,VT,&LDVT,WORK,&LWORK,&INFO);
+ /*Subroutine DGESVD from Lapack lib. */
+
+ if (nout == 1){ /* ans = svd(x)*/
+ memcpy(out1,S,min(row,col)*sizeof(double));
+ //printf("%lf %lf %lf",*(S),*(S+1),*(S+2));
+ } /* [U,S,VT] = svd(x) */
+ else if(in2 == 0 && nout > 1){
+ memcpy(out1,U,LDU*M*sizeof(double));
+ //memcpy(out3,VT,LDVT*min(row,col)*sizeof(double));
+ for(j=0;j<M;j++){
+ for(k=0;k<N;k++){
+ if(j == k) *((out2+j*(min(M,N)))+k) = *(S+j);
+ else *((out2+j*(min(M,N)))+k) = 0;
+ }
+ }
+ dtransposea(VT,LDVT,N,out3);
+ }
+ else{
+ memcpy(out1,U,LDU*min(row,col)*sizeof(double));
+ for(j=0;j<min(M,N);j++){
+ for(k=0;k<min(M,N);k++){
+ if(j == k) *((out2+j*(min(M,N)))+k) = *(S+j);
+ else *((out2+j*(min(M,N)))+k) = 0;
+ }
+ }
+ dtransposea(VT,LDVT,N,out3);
+ }
+}
+
+int min(int a,int b){
+ if(a > b) return b;
+ return a;
+}
+
+int max(int a,int b){
+ if(a > b) return a;
+ return b;
+}
diff --git a/2.3-1/src/c/linearAlgebra/svd/zsvda.c b/2.3-1/src/c/linearAlgebra/svd/zsvda.c
new file mode 100644
index 00000000..0d360222
--- /dev/null
+++ b/2.3-1/src/c/linearAlgebra/svd/zsvda.c
@@ -0,0 +1,173 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Sandeep Gupta
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+
+ */
+#include "svd.h"
+#include "lapack.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include "string.h"
+#include "doubleComplex.h"
+#include "matrixTranspose.h"
+#include "conj.h"
+
+extern doubleComplex zgesvd_( char* , char* , int* , int* ,doubleComplex *,\
+ int* , double* ,doubleComplex* , int* ,doubleComplex* , int* ,\
+ doubleComplex* , int* , double* , int* );
+
+
+int Min(int a,int b){
+ if(a > b)
+ return b;
+ return a;
+}
+
+int Max(int a,int b){
+ if(a > b)
+ return a;
+ else
+ return b;
+}
+
+void zsvda(doubleComplex *in1,int row,int col,int in2,int nout, doubleComplex *out1,\
+ doubleComplex *out2,doubleComplex *out3){
+
+ /* Allocating memory and copying the input in buf*/
+ doubleComplex *buf;
+ buf = (doubleComplex *)malloc(row*col*sizeof(doubleComplex));
+ memcpy(buf,in1,row*col*sizeof(doubleComplex));
+
+ /* Type of variable used */
+ int i,j,k;
+ char JOBU,JOBVT;
+ int M = row;
+ int N = col;
+ int LDA,LDU,LDVT,LWORK,INFO;
+
+ /*double precision array to store Sigma*/
+ double *S;
+ S = (double *)malloc(Min(M,N)*sizeof(double));
+
+ /* amount of memory needed for work */
+ LWORK = Max(1,2*Min(M,N)+Max(M,N));
+ doubleComplex *WORK = malloc(Max(1,2*LWORK)*sizeof(doubleComplex));
+
+ double *RWORK;
+ RWORK = (double *)malloc(5*Min(M,N)*sizeof(double));
+
+ INFO = 0;
+
+ if(nout == 1){
+ JOBU = 'N';
+ JOBVT = 'N';
+ LDA = M;
+ LDU = M;
+ LDVT = N;
+ //doubleComplex *U,*VT;
+ //U = malloc(sizeof(doubleComplex));
+ //VT = malloc(sizeof(doubleComplex));
+ zgesvd_(&JOBU,&JOBVT,&M,&N,buf,&LDA,S,NULL,&LDU,NULL,&LDVT,WORK,&LWORK,RWORK,&INFO);
+
+ //memcpy(out2,S,Min(M,N)*sizeof(double));
+ for(i=0;i<Min(M,N);i++){
+ out2[i] = DoubleComplex(S[i],0);
+ //out2[i] = S[i];
+ //out2[i] = 0;
+ }
+ out1 = NULL;
+ out3 = NULL;
+ //for(i=0;i<Min(M,N);i++) printf("%lf ",S[i]);
+ //free(S);
+ }
+ else if(nout == 3){
+ if(in2 == 0 || M == N){
+ JOBU = 'A';
+ JOBVT = 'A';
+ LDA = M;
+ LDU = M;
+ LDVT = N;
+ doubleComplex *U = malloc(LDU*M*sizeof(doubleComplex));
+ doubleComplex *VT = malloc(LDVT*N*sizeof(doubleComplex));
+
+ /*doubleComplex wopt;
+ LWORK = -1;
+ zgesvd_(&JOBU,&JOBVT,&M,&N,buf,&LDA,S,U,&LDU,VT,&LDVT,&wopt,&LWORK,RWORK,&INFO);*/
+
+ //LWORK = (int)zreals(wopt);
+
+ WORK = (doubleComplex *)malloc(LWORK*sizeof(doubleComplex));
+ zgesvd_(&JOBU,&JOBVT,&M,&N,buf,&LDA,S,U,&LDU,VT,&LDVT,WORK,&LWORK,RWORK,&INFO);
+
+ memcpy(out1,U,LDU*Min(M,N)*sizeof(doubleComplex));
+ //memcpy(out3,VT,N*N*sizeof(doubleComplex));
+ for(i=0;i<N;i++){
+ for(j=i;j<N;j++){
+ out3[i+j*N] = zconjs(VT[j+i*N]);
+ out3[j+i*N] = zconjs(VT[i+j*N]);
+ }
+ }
+ //ztransposea(VT,LDVT,Min(M,N),out3);
+ /*for(i=0;i<N;i++){
+ for(j=0;j<N;j++){
+ printf("[ %lf %lf]",zreals(VT[i*N+j]),zimags(VT[i*N+j]));
+ }
+ printf("\n");
+ }*/
+ //free(U);
+ //free(VT);
+ }
+ else{
+ LDA = M;
+ LDU = M;
+ if(M > N){
+ JOBU = 'S';
+ JOBVT = 'A';
+ LDVT = N;
+ }
+ else{
+ JOBU = 'A';
+ JOBVT = 'S';
+ LDVT = Min(M,N);
+ }
+ doubleComplex *U;
+ U = malloc(LDU*Min(M,N)*sizeof(doubleComplex));
+ doubleComplex *VT;
+ VT = malloc(LDVT*N*sizeof(doubleComplex));
+ zgesvd_(&JOBU,&JOBVT,&M,&N,buf,&LDA,S,U,&LDU,VT,&LDVT,WORK,&LWORK,RWORK,&INFO);
+ memcpy(out1,U,M*Min(M,N)*sizeof(doubleComplex));
+ //ztransposea(VT,LDVT,Min(row,col),out3);
+
+ /* These lines are added to patch an error of ZGESVD */
+ /*
+ ij = i+(j-1)*N
+ ji = j+(i-1)*N
+ zstk(lV+ij-1) = conjg(zstk(lVT+ji-1))
+ zstk(lV+ji-1) = conjg(zstk(lVT+ij-1))
+ */
+ for(i=0;i<Min(M,N);i++){
+ for(j=0;j<N;j++){
+ out3[j+i*N] = zconjs(VT[i+j*Min(M,N)]);
+ }
+ }
+ //free(U);
+ //free(VT);
+ }
+ /* output from zgesvd is copied to out2 variables in required format*/
+ for(j=0;j<Min(M,N);j++){
+ for(k=0;k<Min(M,N);k++){
+ if(j == k)
+ out2[j*(Min(M,N))+k] = DoubleComplex(S[j],0);
+ else
+ out2[j*(Min(M,N))+k] = DoubleComplex(0,0);
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/matrixOperations/cat/ccata.c b/2.3-1/src/c/matrixOperations/cat/ccata.c
index a6ac6cf0..cd2b4c92 100644
--- a/2.3-1/src/c/matrixOperations/cat/ccata.c
+++ b/2.3-1/src/c/matrixOperations/cat/ccata.c
@@ -26,7 +26,7 @@ void crowcata(floatComplex *in1, int lines1, int columns1, floatComplex *in2, i
{
for (j = 0 ; j < lines1 ; ++j)
{
- /*out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];*/
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
}
for (j = 0 ; j < lines2 ; ++j)
{
diff --git a/2.3-1/src/c/matrixOperations/cat/zcata.c b/2.3-1/src/c/matrixOperations/cat/zcata.c
index bfb6e922..485553d7 100644
--- a/2.3-1/src/c/matrixOperations/cat/zcata.c
+++ b/2.3-1/src/c/matrixOperations/cat/zcata.c
@@ -26,7 +26,7 @@ void zrowcata(doubleComplex *in1, int lines1, int columns1, doubleComplex *in2,
{
for (j = 0 ; j < lines1 ; ++j)
{
- /*out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];*/
+ out[i*(lines1 + lines2) + j] = in1[i*lines1 + j];
}
for (j = 0 ; j < lines2 ; ++j)
{
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..7018df2c
--- /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;
+ a = ((5*(float)analogRead(pin))/1023);
+ return(a);
+}
+
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..2dd82e41
--- /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;
+ a = ((value*255)/5);
+ analogWrite(pin,a);
+
+}
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..349bcb17
--- /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)
+ {
+ analogWrite(dcm_pin_1[motor_no],0);
+ analogWrite(dcm_pin_2[motor_no],0);
+ }
+
+ else
+ {
+ digitalWrite(dcm_pin_1[motor_no],LOW);
+ digitalWrite(dcm_pin_2[motor_no],LOW);
+ }
+}
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
index 6e1c2caa..e8fa8b3c 100644
--- 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
@@ -6,6 +6,7 @@
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
*/
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
index 389f9111..0d04e748 100644
--- 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
@@ -6,6 +6,7 @@
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
*/
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..adc1a6e5
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_dev/u8cmd_i2c_devs.cpp
@@ -0,0 +1,10 @@
+#include "cmd_i2c_dev.h"
+#include "Arduino.h"
+#include "Wire.h"
+
+
+uint8 u8cmd_i2c_devs(uint8 address)
+{
+ Wire.begin();
+ return((uint8)address);
+}
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..8f02a87e
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_read/u8cmd_i2c_reads.cpp
@@ -0,0 +1,18 @@
+#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..0a2ec2ed
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_read_register/u8cmd_i2c_read_registers.cpp
@@ -0,0 +1,26 @@
+#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..0239097a
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_write/u8cmd_i2c_writes.cpp
@@ -0,0 +1,13 @@
+#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..63cc7c7a
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/cmd_i2c_write_register/u8cmd_i2c_write_registers.cpp
@@ -0,0 +1,16 @@
+#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/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_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
index 2b69c99b..1b5d41c1 100644
--- 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
@@ -22,7 +22,7 @@ extern "C" {
extern uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
-void u8cmd_dc_motor_runs(uint8 board_no, uint8 motor_no, int16 duty);
+void u8cmd_dcmotor_runs(uint8 board_no, uint8 motor_no, int16 duty);
#ifdef __cplusplus
} /* extern "C" */
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
index cecd4659..45854ffb 100644
--- 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
@@ -22,7 +22,7 @@ extern "C" {
extern uint8 dcm_pin_1[4], dcm_pin_2[4], dcm_mode[4];
-void u8cmd_dc_motor_setups(uint8 board_no, uint8 driver_type, uint8 motor_no,\
+void u8cmd_dcmotor_setups(uint8 board_no, uint8 driver_type, uint8 motor_no,\
uint8 pin_1, uint8 pin_2);
#ifdef __cplusplus
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..861a8e7b
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_dev.h
@@ -0,0 +1,16 @@
+#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..791bdd38
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read.h
@@ -0,0 +1,16 @@
+#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..ea203adf
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_read_register.h
@@ -0,0 +1,16 @@
+#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..6a57222b
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write.h
@@ -0,0 +1,16 @@
+#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..ff1b9ec0
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/includes/cmd_i2c_write_register.h
@@ -0,0 +1,16 @@
+#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/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_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
index 61e0d2e3..d465ff6f 100644
--- 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
@@ -6,6 +6,7 @@
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
*/
@@ -20,16 +21,16 @@
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 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);
+ (uint8)in2, (int16)in3);
+
+#define d0d0cmd_dcmotor_release(in1,in2) u8cmd_dcmotor_releases((uint8)in1,(uint8)in2)
#ifdef __cplusplus
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..c4d93d74
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_dev.h
@@ -0,0 +1,17 @@
+#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..b0633a07
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read.h
@@ -0,0 +1,19 @@
+#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..5f4c5298
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_read_register.h
@@ -0,0 +1,18 @@
+#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..a7705a89
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write.h
@@ -0,0 +1,20 @@
+#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..35c0527e
--- /dev/null
+++ b/2.3-1/src/c/scilab-arduino/interfaces/int_cmd_i2c_write_register.h
@@ -0,0 +1,19 @@
+#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/sleep/u16sleeps.c b/2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c
index 88f8a66d..30459782 100644
--- a/2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c
+++ b/2.3-1/src/c/scilab-arduino/sleep/u16sleeps.c
@@ -6,11 +6,13 @@
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)
{
diff --git a/2.3-1/src/c/signalProcessing/%k/dmodka.c b/2.3-1/src/c/signalProcessing/%k/dmodka.c
new file mode 100644
index 00000000..c0630ec0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%k/dmodka.c
@@ -0,0 +1,97 @@
+#include<stdio.h>
+#include<math.h>
+#include "modk.h"
+double max_calc(double* ptr,int sz)
+{
+ int i=0;
+ double mx;
+ if(ptr[0]<0)
+ {
+ ptr[0]=-1*ptr[0];
+ }
+ mx=(ptr[0]);
+ //printf("%lf\n",mx);
+ for(i=1;i<sz;i++)
+ {
+ if(ptr[i]<0)
+ {
+ ptr[i]=-1*ptr[i];
+ }
+ if(mx<(ptr[i]))
+ mx=(ptr[i]);
+ }
+ return mx;
+}
+void dmodka(double* inp,int size,double* oup)
+{
+ double ones[size],PI=M_PI;
+ double eps=pow(2,-52);
+ int i;
+ for(i=0;i<size;i++)
+ {
+ ones[i]=1;
+ }
+ double a[size],b[size],c[size],an[size],bn[size],cn[size],kans[size];
+
+ int j,kk,l,m;
+ for(j=0;j<size;j++)
+ {
+ a[j]=1;
+ }
+ for(kk=0;kk<size;kk++)
+ {
+ b[kk]=sqrt(ones[kk]-inp[kk]);
+ }
+ for(l=0;l<size;l++)
+ {
+ c[l]=sqrt(inp[l]);
+
+ }
+ int x=0;
+ //double maxi;
+ //maxi=max_calc(c,size);
+ //printf("%lf",maxi);
+
+ while(max_calc(c,size)>eps)
+ {
+ int q,w,r;
+ for(q=0;q<size;q++)
+ {
+ an[q]=0.5*(a[q]+b[q]);
+ }
+ for(w=0;w<size;w++)
+ {
+ bn[w]=sqrt(a[w]*b[w]);
+ }
+ for(r=0;r<size;r++)
+ {
+ cn[r]=0.5*(a[r]-b[r]);
+ }
+ int x,y,z;
+ for(x=0;x<size;x++)
+ {
+ a[x]=an[x];
+ }
+ for(y=0;y<size;y++)
+ {
+ b[y]=bn[y];
+ }
+ for(z=0;z<size;z++)
+ {
+ c[z]=cn[z];
+ }
+ }
+ int q,w;
+ for(q=0;q<size;q++)
+ {
+ oup[q]=PI*(ones[q]/(2*a[q]));
+ }
+
+}
+/*
+int main()
+{
+ double m[3]={0.1,0.2,0.3};
+ dka(m,3);
+}
+*/
diff --git a/2.3-1/src/c/signalProcessing/%k/int_modk.h b/2.3-1/src/c/signalProcessing/%k/int_modk.h
new file mode 100644
index 00000000..ae09c50a
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%k/int_modk.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_%K_H__
+#define __INT_%K_H__
+
+#define d2modkz2(inp,size,oup) dmodka(inp,size,oup)
+
+#endif /* !INT_%K_H__! */
diff --git a/2.3-1/src/c/signalProcessing/%k/modk.h b/2.3-1/src/c/signalProcessing/%k/modk.h
new file mode 100644
index 00000000..6b4a7e08
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%k/modk.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __%K_H__
+#define __%K_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dmodka(double* inp,int size,doubleComplex* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __%K_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/%sn/dmodsna.c b/2.3-1/src/c/signalProcessing/%sn/dmodsna.c
new file mode 100644
index 00000000..7e1e81c3
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%sn/dmodsna.c
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "modsn.h"
+
+void dmodsna(double* uu,int size,double emmc,double* sn)
+{
+ int i;
+ for(i=0;i<size;i++)
+ {
+ sn[i]=dmodsns(uu[i],emmc);
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/%sn/dmodsns.c b/2.3-1/src/c/signalProcessing/%sn/dmodsns.c
new file mode 100644
index 00000000..06d0a6f0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%sn/dmodsns.c
@@ -0,0 +1,93 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ Reference:- Abramowitz, Milton and Stegun, Irene A
+ Handbook of Mathematical Functions, Dover, 1965
+ Chapter 16 (Sections 16.4, 16.13 and 16.15)
+ Link for FORTRAN code:-http://www.aip.de/groups/soe/local/numres/bookfpdf/f6-11.pdf
+*/
+
+#include<stdio.h>
+#include<math.h>
+#define CA 0.0003
+#include "modsn.h"
+double dmodsns(double uu, double emmc)
+{
+ double a,b,c,d,emc,u;
+ double em[14],en[14];
+ int i,ii,l,bo;
+ double sn,cn,dn;
+ emc=1-emmc;
+ u=uu;
+ if(emc)
+ {
+ bo=(emc<0.0);
+ if(bo)
+ {
+ d=1.0-emc;
+ emc/=-1.0/d;
+ u*=(d=sqrt(d));
+ }
+ a=1.0;
+ dn=1.0;
+ for(i=1;i<=13;i++)
+ {
+ l=i;
+ em[i]=a;
+ en[i]=(emc=sqrt(emc));
+ c=0.5*(a+emc);
+ if(fabs(a-emc)<=CA*a)break;
+ emc*=a;
+ a=c;
+ }
+ u*=c;
+ sn=sin(u);
+ cn=cos(u);
+ if(sn)
+ {
+ a=cn/sn;
+ c*=a;
+ for(ii=l;ii>=1;ii--)
+ {
+ b=em[ii];
+ a*=c;
+ c*=dn;
+ dn=(en[ii]+a)/(b+a);
+ a=c/b;
+ }
+ a=1.0/sqrt(c*c+1.0);
+ sn=(sn>=0.0?a:-a);
+ cn=c*(sn);
+ }
+ if(bo)
+ {
+ a=dn;
+ dn=cn;
+ cn=a;
+ sn/=d;
+ }
+ }
+ else
+ {
+ cn=1.0/cosh(u);
+ dn=cn;
+ sn=tanh(u);
+ }
+ return sn;
+}
+/*
+int main()
+{
+ double u,k;
+ u=4;
+ k=0.7;
+ sn(u,k);
+}
+*/
diff --git a/2.3-1/src/c/signalProcessing/%sn/int_modsn.h b/2.3-1/src/c/signalProcessing/%sn/int_modsn.h
new file mode 100644
index 00000000..179fb61f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%sn/int_modsn.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_MODSN_H__
+#define __INT_MODSN_H__
+
+#define d0d0modsnd0(uu,emmc) dmodsns(uu,emmc)
+
+#endif /* !INT_MODSN_H__! */
diff --git a/2.3-1/src/c/signalProcessing/%sn/modsn.h b/2.3-1/src/c/signalProcessing/%sn/modsn.h
new file mode 100644
index 00000000..c5896562
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%sn/modsn.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __MODSN_H__
+#define __MODSN_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "c" {
+#endif
+
+double dmodsns(double uu, double emmc);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __MODSN_H__ */
diff --git a/2.3-1/src/c/signalProcessing/%sn/zmodsna.c b/2.3-1/src/c/signalProcessing/%sn/zmodsna.c
new file mode 100644
index 00000000..33052a32
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%sn/zmodsna.c
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "modsn.h"
+#include "doubleComplex.h"
+
+void zmodsna(doubleComplex* uu,int size,double emmc,doubleComplex* sn)
+{
+ int i;
+ for(i=0;i<size;i++)
+ {
+ sn[i]=zmodsns(uu[i],emmc);
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/%sn/zmodsns.c b/2.3-1/src/c/signalProcessing/%sn/zmodsns.c
new file mode 100644
index 00000000..5f35059f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/%sn/zmodsns.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ Reference:- Abramowitz, Milton and Stegun, Irene A
+ Handbook of Mathematical Functions, Dover, 1965
+ Chapter 16 (Sections 16.4, 16.13 and 16.15)
+ Link for FORTRAN code:-http://www.aip.de/groups/soe/local/numres/bookfpdf/f6-11.pdf
+*/
+
+#include<stdio.h>
+#include<math.h>
+#include "modsn.h"
+#include "doubleComplex.h"
+#define CA 0.0003
+
+doubleComplex zmodsns(doubleComplex uu,double emmc)
+{
+ doubleComplex ans;
+ double uur,uui;
+ uur=zreals(uu);
+ uui=zimags(uu);
+ double sr,cr,dr;
+ //Performing Elliptic Function operation for the real values
+ double a1,b1,c1,d1,emc1,u1;
+ double em1[14],en1[14];
+ int i1,ii1,l1,bo1;
+ emc1=1-emmc;
+ u1=uur;
+ if(emc1)
+ {
+ bo1=(emc1<0.0);
+ if(bo1)
+ {
+ d1=1.0-emc1;
+ emc1/=-1.0/d1;
+ u1*=(d1=sqrt(d1));
+ }
+ a1=1.0;
+ dr=1.0;
+ for(i1=1;i1<=13;i1++)
+ {
+ l1=i1;
+ em1[i1]=a1;
+ en1[i1]=(emc1=sqrt(emc1));
+ c1=0.5*(a1+emc1);
+ if(fabs(a1-emc1)<=CA*a1)break;
+ emc1*=a1;
+ a1=c1;
+ }
+ u1*=c1;
+ sr=sin(u1);
+ cr=cos(u1);
+ if(sr)
+ {
+ a1=cr/sr;
+ c1*=a1;
+ for(ii1=l1;ii1>=1;ii1--)
+ {
+ b1=em1[ii1];
+ a1*=c1;
+ c1*=dr;
+ dr=(en1[ii1]+a1)/(b1+a1);
+ a1=c1/b1;
+ }
+ a1=1.0/sqrt(c1*c1+1.0);
+ sr=(sr>=0.0?a1:-a1);
+ cr=c1*(sr);
+ }
+ if(bo1)
+ {
+ a1=dr;
+ dr=cr;
+ cr=a1;
+ sr/=d1;
+ }
+ }
+ else
+ {
+ cr=1.0/cosh(u1);
+ dr=cr;
+ sr=tanh(u1);
+ }
+ ////////////////////////////////////////////////////////////////
+ double si,ci,di;
+ //Performing Elleptic Function operation for the imaginary values
+ double a,b,c,d,emc,u;
+ double em[14],en[14];
+ int i,ii,l,bo;
+ //double s1,c1,d1;
+ emc=emmc;
+ u=uui;
+ if(emc)
+ {
+ bo=(emc<0.0);
+ if(bo)
+ {
+ d=1.0-emc;
+ emc/=-1.0/d;
+ u*=(d=sqrt(d));
+ }
+ a=1.0;
+ di=1.0;
+ for(i=1;i<=13;i++)
+ {
+ l=i;
+ em[i]=a;
+ en[i]=(emc=sqrt(emc));
+ c=0.5*(a+emc);
+ if(fabs(a-emc)<=CA*a)break;
+ emc*=a;
+ a=c;
+ }
+ u*=c;
+ si=sin(u);
+ ci=cos(u);
+ if(si)
+ {
+ a=ci/si;
+ c*=a;
+ for(ii=l;ii>=1;ii--)
+ {
+ b=em[ii];
+ a*=c;
+ c*=di;
+ di=(en[ii]+a)/(b+a);
+ a=c/b;
+ }
+ a=1.0/sqrt(c*c+1.0);
+ si=(si>=0.0?a:-a);
+ ci=c*(si);
+ }
+ if(bo)
+ {
+ a=di;
+ di=ci;
+ ci=a;
+ si/=d;
+ }
+ }
+ else
+ {
+ ci=1.0/cosh(u);
+ di=ci;
+ si=tanh(u);
+ }
+ /////////////////////////////////////////////////////////
+ double delta;
+ delta=ci*ci + emmc*sr*sr*si*si;
+ double snir,snii;
+ snir=(sr*di)/delta;
+ snii=(cr*dr*si*ci)/delta;
+ ans=DoubleComplex(snir,snii);
+ return ans;
+}
diff --git a/2.3-1/src/c/signalProcessing/buttmag/buttmag.h b/2.3-1/src/c/signalProcessing/buttmag/buttmag.h
new file mode 100644
index 00000000..47e64af8
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/buttmag/buttmag.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __BUTTMAG_H__
+#define __BUTTMAG_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dbuttmags(double order, double omegac, int size, double* sample,double* out);
+
+#ifdef __cplusplus
+} /* extern "C"*/
+#endif
+
+#endif /* __BUTTMAG_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/buttmag/dbuttmags.c b/2.3-1/src/c/signalProcessing/buttmag/dbuttmags.c
new file mode 100644
index 00000000..dc40e814
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/buttmag/dbuttmags.c
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include<stdio.h>
+#include<math.h>
+#include "buttmag.h"
+void dbuttmags(double order, double omegac,double* sample,int size,double* out)
+{
+ double ones[size];
+ int j,k;
+ for(j=0;j<size;j++)
+ {
+ ones[j]=1.0;
+ }
+ //double h[size];
+ for(k=0;k<size;k++)
+ {
+ double x=ones[k]/(ones[k]+pow((sample[k]/omegac),(2*order)));
+ out[k]=x;
+ //printf("%lf\n",h[k]);
+ }
+
+}
+
diff --git a/2.3-1/src/c/signalProcessing/buttmag/int_buttmag.h b/2.3-1/src/c/signalProcessing/buttmag/int_buttmag.h
new file mode 100644
index 00000000..9867438e
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/buttmag/int_buttmag.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_BUTTMAG_H__
+#define __INT_BUTTMAG_H__
+
+#define d0d0d2buttmagd2(order,omegac,size,sample,out) dbuttmags(order,omegac,size,sample,out)
+
+#endif /* !INT_BUTTMAG_H__! */
diff --git a/2.3-1/src/c/signalProcessing/buttmag/u8buttmags.c b/2.3-1/src/c/signalProcessing/buttmag/u8buttmags.c
new file mode 100644
index 00000000..e7b52c22
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/buttmag/u8buttmags.c
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+#include<stdio.h>
+#include<math.h>
+#include "buttmag.h"
+void dbuttmags(int order, int omegac,double* sample,int size,double* out)
+{
+ double ones[size];
+ int j,k;
+ for(j=0;j<size;j++)
+ {
+ ones[j]=1.0;
+ }
+ //double h[size];
+ for(k=0;k<size;k++)
+ {
+ double x=ones[k]/(ones[k]+pow((sample[k]/omegac),(2*order)));
+ out[k]=x;
+ //printf("%lf\n",h[k]);
+ }
+
+}
+
diff --git a/2.3-1/src/c/signalProcessing/cheb1mag/cheb1mag.h b/2.3-1/src/c/signalProcessing/cheb1mag/cheb1mag.h
new file mode 100644
index 00000000..369ee4ce
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/cheb1mag/cheb1mag.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __CHEB1MAG_H__
+#define __CHEB1MAG_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dcheb1mags(double n, double omegac, double epsilon, double* sample,int size,double* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CHEB1MAG_H__ */
diff --git a/2.3-1/src/c/signalProcessing/cheb1mag/dcheb1mags.c b/2.3-1/src/c/signalProcessing/cheb1mag/dcheb1mags.c
new file mode 100644
index 00000000..a4a459d4
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/cheb1mag/dcheb1mags.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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "cheb1mag.h"
+void dcheb1mags(double n, double omegac, double epsilon, double* sample,int size,double* out)
+{
+ double x;
+ int j;
+ double tn;
+ for(j=0;j<size;j++)
+ {
+ x=sample[j]/omegac;
+ if(x<=1)
+ {
+ tn=cos(n*acos(x));
+ out[j]=1/(1+(epsilon*epsilon)*(tn*tn));
+ }
+ else
+ {
+ tn=cosh(n*acosh(x));
+ out[j]=1/(1+(epsilon*epsilon)*(tn*tn));
+ }
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/cheb1mag/int_cheb1mag.h b/2.3-1/src/c/signalProcessing/cheb1mag/int_cheb1mag.h
new file mode 100644
index 00000000..fa0ff83e
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/cheb1mag/int_cheb1mag.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_CHEB1MAG_H__
+#define __INT_CHEB1MAG_H__
+
+#define d0d0d2cheb1magd2(n,omegac,epsilon,sample,size,out) dcheb1mags(n,omegac,epsilon,sample,size,out)
+
+#endif /* !__INT_CHEB1MAG_H__! */
diff --git a/2.3-1/src/c/signalProcessing/cheb2mag/cheb2mag.h b/2.3-1/src/c/signalProcessing/cheb2mag/cheb2mag.h
new file mode 100644
index 00000000..0516ca51
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/cheb2mag/cheb2mag.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __CHEB2MAG_H__
+#define __CHEB2MAG_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dcheb2mags(double n,double omegar, double A, double* sample,int size,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CHEB2MAG_H__ */
diff --git a/2.3-1/src/c/signalProcessing/cheb2mag/dcheb2mags.c b/2.3-1/src/c/signalProcessing/cheb2mag/dcheb2mags.c
new file mode 100644
index 00000000..006c5917
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/cheb2mag/dcheb2mags.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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "cheb2mag.h"
+void dcheb2mags(double n,double omegar, double A, double* sample,int size,double* oup)
+{
+ double e;
+ //e=sqrt(A*A-1);
+ e=1/(pow(10,A/10)-1);
+ double x,k,cn,h,tp;
+ int i;
+ for(i=0;i<size;i++)
+ {
+ x=omegar/sample[i];
+ if(x<=1)
+ {
+ tp=acos(x);
+ cn=cos(n*tp);
+ if(x==1)
+ {
+ h=1/(1+A*A-1);
+ }
+ else
+ {
+ h=1/(1+((A*A-1)/(cn*cn)));
+ }
+
+ }
+ else
+ {
+ tp=acosh(x);
+ cn=cosh(n*tp);
+ h=e*(cn*cn)/(1+e*(cn*cn));
+
+ }
+ oup[i]=h;
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/cheb2mag/int_cheb2mag.h b/2.3-1/src/c/signalProcessing/cheb2mag/int_cheb2mag.h
new file mode 100644
index 00000000..05b77c2d
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/cheb2mag/int_cheb2mag.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_CHEB2MAG_H__
+#define __INT_CHEB2MAG_H__
+
+#define d0d0d0d2cheb2magd2(n,omegar,A,sample,size,oup) dcheb2mag(n,omegar,A,sample,size,oup)
+
+#endif /* !__INT_CHEB2MAG_H__! */
diff --git a/2.3-1/src/c/signalProcessing/ffilt/ffilt.h b/2.3-1/src/c/signalProcessing/ffilt/ffilt.h
new file mode 100644
index 00000000..9b98f34c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ffilt/ffilt.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __FFILT_H__
+#define __FFILT_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void gffilts(char* ft,double N,double fc,double fh,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __FFILT_H__ */
diff --git a/2.3-1/src/c/signalProcessing/ffilt/gffilts.c b/2.3-1/src/c/signalProcessing/ffilt/gffilts.c
new file mode 100644
index 00000000..538daf3e
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ffilt/gffilts.c
@@ -0,0 +1,90 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "filt_sinc.h"
+#include "ffilt.h"
+void gffilts(char* ft,int size,double N,double fc,double fh,double* oup)
+{
+ int sz=N;
+ double X[sz];
+ double no22=(N-1)/2;
+ int ino22=(int)no22;
+ if(ft[0]=='l')
+ {
+ dfilt_sincs(N,fc,X);
+ int k=0;
+ for(k=0;k<sz;k++)
+ {
+ oup[k]=X[k];
+ }
+ }
+ else if(ft[0]=='h')
+ {
+ int k=0;
+ dfilt_sincs(N,fc,X);
+ for(k=0;k<sz;k++)
+ {
+ oup[k]=-1*X[k];
+ }
+ int id=no22;
+ oup[id]=1+oup[id];
+ }
+ else if(ft[0]=='b')
+ {
+ double wc=M_PI*(fh+fc);
+ fc=(fh-fc)/2;
+ dfilt_sincs(N,fc,X);
+ double Y[sz];
+ double k=0;
+ for(k=-no22;k<=no22;k++)
+ {
+ int ind;
+ ind=k+no22;
+ Y[ind]=2*cos(wc*k);
+ }
+ int j=0;
+ for(j=0;j<sz;j++)
+ {
+ oup[j]=X[j]*Y[j];
+ }
+ }
+ else if(ft[0]=='s')
+ {
+ double wc=M_PI*(fh+fc);
+ fc=(fh-fc)/2;
+ dfilt_sincs(N,fc,X);
+ double Y[sz];
+ double k=0;
+ for(k=-no22;k<=no22;k++)
+ {
+ int ind;
+ ind=k+no22;
+ Y[ind]=2*cos(wc*k);
+ }
+ int j=0;
+ for(j=0;j<sz;j++)
+ {
+ oup[j]=-1*X[j]*Y[j];
+ }
+ int id=no22;
+ oup[id]=1+oup[id];
+ }
+}
+/*
+int main()
+{
+ string s;
+ int n;
+ double fl,fh;
+}
+*/
diff --git a/2.3-1/src/c/signalProcessing/ffilt/int_ffilt.h b/2.3-1/src/c/signalProcessing/ffilt/int_ffilt.h
new file mode 100644
index 00000000..83f44827
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/ffilt/int_ffilt.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_FFILT_H__
+#define __INT_FFILT_H__
+
+#define g0d0d0d0ffiltd2(ft,N,fc,fh,oup) gffilts(ft,N,fc,fh,oup)
+
+#endif /* !__INT_FFILT_H__! */
diff --git a/2.3-1/src/c/signalProcessing/filt_sinc/dfilt_sincs.c b/2.3-1/src/c/signalProcessing/filt_sinc/dfilt_sincs.c
new file mode 100644
index 00000000..65aaaa65
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/filt_sinc/dfilt_sincs.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "filt_sinc.h"
+void dfilt_sincs(double N,double fc,double* oup)
+{
+ double no2=(N-1)/2;
+ int ino2=(int)no2;
+ double wl=fc*2*M_PI;
+ int sz=N;
+ double xn[sz];
+ double i;
+ int l,m;
+ for(i=-no2;i<=no2;i++)
+ {
+ l=i+no2;
+ xn[l]=sin(wl*i);
+ }
+ double xd[sz];
+ double j;
+ printf("\n");
+ for(j=-no2;j<=no2;j++)
+ {
+ m=j+no2;
+ xd[m]=M_PI*j;
+ }
+ if(ino2==no2)
+ {
+ xn[(int)no2]=2*fc;
+ xd[(int)no2]=1;
+ }
+ double x[sz];
+ int k;
+ for(k=0;k<N;k++)
+ {
+ oup[k]=xn[k]/xd[k];
+ }
+}
+/*
+int main()
+{
+ int n;
+ double fl;
+ n=5;
+ fl=0.2;
+ filt_sinc(n,fl);
+}
+*/
diff --git a/2.3-1/src/c/signalProcessing/filt_sinc/filt_sinc.h b/2.3-1/src/c/signalProcessing/filt_sinc/filt_sinc.h
new file mode 100644
index 00000000..43b24151
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/filt_sinc/filt_sinc.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __FILT_SINC_H__
+#define __FILT_SINC_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8filt_sincs(int N,double fc,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __FILT_SINC_H */
+
diff --git a/2.3-1/src/c/signalProcessing/filt_sinc/int_filt_sinc.h b/2.3-1/src/c/signalProcessing/filt_sinc/int_filt_sinc.h
new file mode 100644
index 00000000..5b7b07ae
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/filt_sinc/int_filt_sinc.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_FILT_SINC_H__
+#define __INT_FILT_SINC_H__
+
+#define u80d0filt_sincd2(N,fc,oup) u8filt_sincs(N,fc,oup)
+
+#endif /* !__INT_FILT_SINC_H__! */
diff --git a/2.3-1/src/c/signalProcessing/fsfirlin/dfsfirlina.c b/2.3-1/src/c/signalProcessing/fsfirlin/dfsfirlina.c
new file mode 100644
index 00000000..d2079f4d
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fsfirlin/dfsfirlina.c
@@ -0,0 +1,144 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#include<stdio.h>
+
+#include<math.h>
+#include "sincd.h"
+#include "fsfirlin.h"
+//#define PI 3.14159265358979
+
+void dfsfirlina(double* hd,int size,double flag,double* hst)
+{
+ int n1=size,n;
+ if( n1%2==0)
+ {
+ n=2*n1;
+ }
+ else
+ {
+ n=2*n1+1;
+ }
+ double scd[8*n+1];
+ //STRAT SINCD
+ double npt=4*n;
+ int sz=4*n;
+ double PI=M_PI;
+ double pas=PI/npt;
+ double om[sz+1];
+ int i;
+ for(i=0;i<=sz;i++)
+ {
+ om[i]=i*pas;
+ }
+ double eps=pow(-1,(n-1));
+ double s1[sz+1],s2[sz+1];
+ double s[2*(sz)+1];
+ double sr[2*(sz)+1];
+ if(flag==1)
+ {
+ int j,k;
+ for(j=0;j<=4*n;j++)
+ {
+ s1[j]=sin(n*om[j]);
+ s2[j]=sin(om[j]);
+ }
+ s1[0]=n;
+ s2[0]=1;
+ s1[sz]=n*eps;
+ s2[sz]=1;
+
+ for(k=0;k<=4*n;k++)
+ {
+ s[k]=s1[k]/s2[k];
+ }
+
+ int x;
+ for(x=0;x<=4*n;x++)
+ {
+ scd[sz-x]=s[x];
+ }
+ int l;
+ for(l=4*n+1;l<=8*n;l++)
+ {
+ scd[l]=s[l-(sz)];
+ }
+ int m;
+ for(m=0;m<=8*n;m++)
+ {
+ scd[m]=scd[m]/n;
+ }
+ }
+ else
+ {
+ int a;
+ for(a=0;a<=4*n;a++)
+ {
+ om[a]=om[a]-(PI/(2*n));
+ }
+ int j,k;
+ for(j=0;j<=4*n;j++)
+ {
+ s1[j]=sin(n*om[j]);
+ s2[j]=sin(om[j]);
+ }
+ s1[2]=n;
+ s2[2]=1;
+ for(k=0;k<=4*n;k++)
+ {
+ s[k]=s1[k]/s2[k];
+ }
+ int m;
+ for(m=0;m<=4*n;m++)
+ {
+ scd[m]=(eps*s[m])/n;
+ }
+ int l;
+ for(l=4*n+1;l<=8*n;l++)
+ {
+ scd[l]=s[l-(sz)]/n;
+ }
+ }
+ //END SINCD
+ int ii;
+ for(ii=4*n;ii<=6*n;ii++)
+ {
+ hst[ii-(4*n)]=hd[0]*scd[ii];
+ }
+
+ int epsi;
+ epsi=pow(-1,n-1);
+ int jj;
+ for(jj=1;jj<=(n1-1);jj++)
+ {
+ double tp1[2*n+1];
+ double tp2[2*n+1];
+ int k,l;
+ for(k=(-4*jj+4*n);k<=(-4*jj+6*n);k++)
+ {
+ tp1[k-(-4*jj+4*n)]=hd[jj]*scd[k];
+ }
+
+ for(l=(4*jj);l<=(4*jj+2*n);l++)
+ {
+ tp2[l-(4*jj)]=hd[jj]*(epsi*scd[l]);
+ }
+ int m;
+ for(m=0;m<=2*n;m++)
+ {
+ hst[m]=hst[m]+(tp1[m]+tp2[m]);
+ }
+
+ }
+
+
+}
diff --git a/2.3-1/src/c/signalProcessing/fsfirlin/fsfirlin.h b/2.3-1/src/c/signalProcessing/fsfirlin/fsfirlin.h
new file mode 100644
index 00000000..7337cbfe
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fsfirlin/fsfirlin.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __FSFIRLIN_H__
+#define __FSFIRLIN_H__
+#include "types.h"
+#include "sincd.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dfsfirlina(double* hd,int size,int flag,double* hst);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
diff --git a/2.3-1/src/c/signalProcessing/fsfirlin/int_fsfirlin.h b/2.3-1/src/c/signalProcessing/fsfirlin/int_fsfirlin.h
new file mode 100644
index 00000000..857dae8c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/fsfirlin/int_fsfirlin.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_FSFIRLIN_H__
+#define __INT_FSFIRLIN_H__
+
+#define d2u80fsfirlind2(hd,size,flag,hst) dfsfirlina(hd,size[1],flag,hst)
+
+#endif /* !__INT_FSFIRLIN_H__! */
diff --git a/2.3-1/src/c/signalProcessing/includes/buttmag.h b/2.3-1/src/c/signalProcessing/includes/buttmag.h
new file mode 100644
index 00000000..ef17b7ea
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/buttmag.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __BUTTMAG_H__
+#define __BUTTMAG_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dbuttmags(double order, double omegac, double* sample, int size,double* out);
+void u8buttmags(int order, int omegac, double* sample, int size,double* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __BUTTMAG_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/cheb1mag.h b/2.3-1/src/c/signalProcessing/includes/cheb1mag.h
new file mode 100644
index 00000000..369ee4ce
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/cheb1mag.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __CHEB1MAG_H__
+#define __CHEB1MAG_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dcheb1mags(double n, double omegac, double epsilon, double* sample,int size,double* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CHEB1MAG_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/cheb2mag.h b/2.3-1/src/c/signalProcessing/includes/cheb2mag.h
new file mode 100644
index 00000000..0516ca51
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/cheb2mag.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __CHEB2MAG_H__
+#define __CHEB2MAG_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dcheb2mags(double n,double omegar, double A, double* sample,int size,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __CHEB2MAG_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/dct.h b/2.3-1/src/c/signalProcessing/includes/dct.h
new file mode 100644
index 00000000..80668ffa
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/dct.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __DCT_H__
+#define __DCT_H__
+
+#include <math.h>
+#include "types.h"
+#include "doubleComplex.h"
+#include "addition.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void ddcta(double *in,int row,int col,int sign,double *out);
+
+void sdcta(float *in,int row,int col,int sign,float *out);
+
+void zdcta(doubleComplex *in,int row,int col,int sign,doubleComplex *out);
+
+void cdcta(floatComplex *in,int row,int col,int sign,floatComplex *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/2.3-1/src/c/signalProcessing/includes/ffilt.h b/2.3-1/src/c/signalProcessing/includes/ffilt.h
new file mode 100644
index 00000000..f38df6e6
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/ffilt.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __FFILT_H__
+#define __FFILT_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void gffilts(char* ft,int size,double N,double fc,double fh,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __FFILT_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/filt_sinc.h b/2.3-1/src/c/signalProcessing/includes/filt_sinc.h
new file mode 100644
index 00000000..095ca91f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/filt_sinc.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __FILT_SINC_H__
+#define __FILT_SINC_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dfilt_sincs(double N,double fc,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __FILT_SINC_H */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/fsfirlin.h b/2.3-1/src/c/signalProcessing/includes/fsfirlin.h
new file mode 100644
index 00000000..cf5fbbd0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/fsfirlin.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __FSFIRLIN_H__
+#define __FSFIRLIN_H__
+#include "types.h"
+#include "sincd.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dfsfirlina(double* hd,int size,double flag,double* hst);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__FSFIRLIN_H__*/
diff --git a/2.3-1/src/c/signalProcessing/includes/idct.h b/2.3-1/src/c/signalProcessing/includes/idct.h
new file mode 100644
index 00000000..1e7b85b3
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/idct.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#ifndef __IDCT_H__
+#define __IDCT_H__
+
+#include <math.h>
+#include "types.h"
+#include "doubleComplex.h"
+#include "addition.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void didcta(double *in,int row,int col,double *out);
+
+void sidcta(float *in,int row,int col,float *out);
+
+void zidcta(doubleComplex *in,int row,int col,doubleComplex *out);
+
+void cidcta(floatComplex *in,int row,int col,floatComplex *out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
diff --git a/2.3-1/src/c/signalProcessing/includes/modk.h b/2.3-1/src/c/signalProcessing/includes/modk.h
new file mode 100644
index 00000000..5040eb7f
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/modk.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __MODK_H__
+#define __MODK_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dmodka(double* inp,int size,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __MODK_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/modsn.h b/2.3-1/src/c/signalProcessing/includes/modsn.h
new file mode 100644
index 00000000..d91dd9d3
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/modsn.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __MODSN_H__
+#define __MODSN_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dmodsns(double uu, double emmc);
+doubleComplex zmodsns(doubleComplex uu,double emmc);
+void dmodsna(double* uu,int size,double emmc,double* sn);
+void zmodsna(doubleComplex* uu,int size,double emmc,doubleComplex* sn);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __MODSN_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/sincd.h b/2.3-1/src/c/signalProcessing/includes/sincd.h
new file mode 100644
index 00000000..9b7a3607
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/sincd.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __SINCD_H__
+#define __SINCD_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dsincds(double n,double flg,double* oup);
+void u8sincds(int n,int flg,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __SINCD_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/zpbutt.h b/2.3-1/src/c/signalProcessing/includes/zpbutt.h
new file mode 100644
index 00000000..9eb88ad4
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/zpbutt.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __ZPBUTT_H__
+#define __ZPBUTT_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dzpbutts(double n,double fl,doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __ZPBUTT_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/includes/zpch1.h b/2.3-1/src/c/signalProcessing/includes/zpch1.h
new file mode 100644
index 00000000..fbe850cc
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/zpch1.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __ZPCH1_H__
+#define __ZPCH1_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dzpch1s(double N,double e,double wc,doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __ZPCH1_H__ */
diff --git a/2.3-1/src/c/signalProcessing/includes/zpch2.h b/2.3-1/src/c/signalProcessing/includes/zpch2.h
new file mode 100644
index 00000000..d7c1c647
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/includes/zpch2.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __ZPCH2_H__
+#define __ZPCH2_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dzpch2s(double N, double A, double omegar,doubleComplex* zeros,doubleComplex* poles);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __ZPCH2_H__ */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_buttmag.h b/2.3-1/src/c/signalProcessing/interfaces/int_buttmag.h
new file mode 100644
index 00000000..4a33fafe
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_buttmag.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_BUTTMAG_H__
+#define __INT_BUTTMAG_H__
+
+#define d0d0d2buttmagd2(order,omegac,sample,size,out) dbuttmags(order,omegac,sample,size[1],out)
+#define u80u80d2buttmagd2(order,omegac,sample,size,out) u8buttmags(order,omegac,sample,size[1],out)
+
+#endif /* !INT_BUTTMAG_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_cheb1mag.h b/2.3-1/src/c/signalProcessing/interfaces/int_cheb1mag.h
new file mode 100644
index 00000000..764e8c79
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_cheb1mag.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_CHEB1MAG_H__
+#define __INT_CHEB1MAG_H__
+
+#define d0d0d0d2cheb1magd2(n,omegac,epsilon,sample,size,out) dcheb1mags(n,omegac,epsilon,sample,size[1],out)
+
+#endif /* !__INT_CHEB1MAG_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_cheb2mag.h b/2.3-1/src/c/signalProcessing/interfaces/int_cheb2mag.h
new file mode 100644
index 00000000..b63db04d
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_cheb2mag.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_CHEB2MAG_H__
+#define __INT_CHEB2MAG_H__
+
+#define d0d0d0d2cheb2magd2(n,omegar,A,sample,size,oup) dcheb2mags(n,omegar,A,sample,size[1],oup)
+
+#endif /* !__INT_CHEB2MAG_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_dct.h b/2.3-1/src/c/signalProcessing/interfaces/int_dct.h
new file mode 100644
index 00000000..3481c4d5
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_dct.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#ifndef __INT_DCT_H__
+#define __INT_DCT_H__
+
+
+
+#define d2dctd2(in,size,out) ddcta(in,size[0],size[1],-1,out)
+
+#define d2d0dctd2(in,size,sign,out) ddcta(in,size[0],size[1],sign,out)
+
+#define s2dcts2(in,size,out) sdcta(in,size[0],size[1],-1,out)
+
+#define s2s0dcts2(in,size,sign,out) sdcta(in,size[0],size[1],sign,out)
+
+#define z2dctz2(in,size,out) zdcta(in,size[0],size[1],-1,out)
+
+#define z2d0dctz2(in,size,sign,out) zdcta(in,size[0],size[1],sign,out)
+
+#define c2dctc2(in,size,out) cdcta(in,size[0],size[1],-1,out)
+
+#define c2s0dctc2(in,size,sign,out) cdcta(in,size[0],size[1],sign,out)
+
+#endif
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_ffilt.h b/2.3-1/src/c/signalProcessing/interfaces/int_ffilt.h
new file mode 100644
index 00000000..273b98f7
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_ffilt.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_FFILT_H__
+#define __INT_FFILT_H__
+
+#define g2d0d0d0ffiltd2(ft,size,N,fc,fh,oup) gffilts(ft,size[1],N,fc,fh,oup)
+
+#endif /* !__INT_FFILT_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_filt_sinc.h b/2.3-1/src/c/signalProcessing/interfaces/int_filt_sinc.h
new file mode 100644
index 00000000..f90d0a62
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_filt_sinc.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_FILT_SINC_H__
+#define __INT_FILT_SINC_H__
+
+#define d0d0filt_sincd2(N,fc,oup) dfilt_sincs(N,fc,oup)
+
+#endif /* !__INT_FILT_SINC_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_fsfirlin.h b/2.3-1/src/c/signalProcessing/interfaces/int_fsfirlin.h
new file mode 100644
index 00000000..3f6fb6e0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_fsfirlin.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_FSFIRLIN_H__
+#define __INT_FSFIRLIN_H__
+
+#define d2d0fsfirlind2(hd,size,flag,hst) dfsfirlina(hd,size[1],flag,hst)
+
+#endif /* !__INT_FSFIRLIN_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_idct.h b/2.3-1/src/c/signalProcessing/interfaces/int_idct.h
new file mode 100644
index 00000000..f705fe2d
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_idct.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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+
+#ifndef __INT_IDCT_H__
+#define __INT_IDCT_H__
+
+
+
+#define d2idctd2(in,size,out) didcta(in,size[0],size[1],out)
+
+#define s2idcts2(in,size,out) sidcta(in,size[0],size[1],out)
+
+#define z2idctz2(in,size,out) zidcta(in,size[0],size[1],out)
+
+#define c2idctc2(in,size,out) cidcta(in,size[0],size[1],out)
+
+#endif
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_modk.h b/2.3-1/src/c/signalProcessing/interfaces/int_modk.h
new file mode 100644
index 00000000..441b9b13
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_modk.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_MODK_H__
+#define __INT_MODK_H__
+
+#define d2modkd2(inp,size,oup) dmodka(inp,size[1],oup)
+
+#endif /* !INT_MODK_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_modsn.h b/2.3-1/src/c/signalProcessing/interfaces/int_modsn.h
new file mode 100644
index 00000000..0d32eb06
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_modsn.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_MODSN_H__
+#define __INT_MODSN_H__
+
+#define d0d0modsnd0(uu,emmc) dmodsns(uu,emmc)
+#define z0d0modsnz0(uu,emmc) zmodsns(uu,emmc)
+#define d2d0modsnd2(uu,size,emmc,sn) dmodsna(uu,size[1],emmc,sn)
+#define z2d0modsnz2(uu,size,emmc,sn) zmodsna(uu,size[1],emmc,sn)
+
+#endif /* !INT_MODSN_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_sincd.h b/2.3-1/src/c/signalProcessing/interfaces/int_sincd.h
new file mode 100644
index 00000000..73136730
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_sincd.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_SINCD_H__
+#define __INT_SINCD_H__
+
+#define d0d0sincdd2(n,flg,oup) dsincds(n,flg,oup)
+#define u80u80sincdd2(n,flg,oup) u8sincds(n,flg,oup)
+
+#endif /* !__INT_SINCD_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_zpbutt.h b/2.3-1/src/c/signalProcessing/interfaces/int_zpbutt.h
new file mode 100644
index 00000000..775c1026
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_zpbutt.h
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_ZPBUTT_H__
+#define __INT_ZPBUTT_H__
+
+#define d0d0zpbuttz2d0(n,fl,out) dzpbutts(n,fl,out)
+
+#endif /* !INT_ZPBUTT_H__! */
+
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_zpch1.h b/2.3-1/src/c/signalProcessing/interfaces/int_zpch1.h
new file mode 100644
index 00000000..429e7c36
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_zpch1.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_ZPCH1_H__
+#define __INT_ZPCH1_H__
+
+#define d0d0d0zpch1z2d0(N,e,wc,out) dzpch1s(N,e,wc,out)
+
+#endif /* !INT_ZPCH1_H__! */
diff --git a/2.3-1/src/c/signalProcessing/interfaces/int_zpch2.h b/2.3-1/src/c/signalProcessing/interfaces/int_zpch2.h
new file mode 100644
index 00000000..fcb12a7c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/interfaces/int_zpch2.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_ZPCH2_H__
+#define __INT_ZPCH2_H__
+
+#define d0d0d0zpch2z2z2d0(N,A,omegar,zeros,poles) dzpch2s(N,A,omegar,zeros,poles)
+
+#endif /* !INT_ZPCH2_H__! */
diff --git a/2.3-1/src/c/signalProcessing/modk/dmodka.c b/2.3-1/src/c/signalProcessing/modk/dmodka.c
new file mode 100644
index 00000000..c0630ec0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/modk/dmodka.c
@@ -0,0 +1,97 @@
+#include<stdio.h>
+#include<math.h>
+#include "modk.h"
+double max_calc(double* ptr,int sz)
+{
+ int i=0;
+ double mx;
+ if(ptr[0]<0)
+ {
+ ptr[0]=-1*ptr[0];
+ }
+ mx=(ptr[0]);
+ //printf("%lf\n",mx);
+ for(i=1;i<sz;i++)
+ {
+ if(ptr[i]<0)
+ {
+ ptr[i]=-1*ptr[i];
+ }
+ if(mx<(ptr[i]))
+ mx=(ptr[i]);
+ }
+ return mx;
+}
+void dmodka(double* inp,int size,double* oup)
+{
+ double ones[size],PI=M_PI;
+ double eps=pow(2,-52);
+ int i;
+ for(i=0;i<size;i++)
+ {
+ ones[i]=1;
+ }
+ double a[size],b[size],c[size],an[size],bn[size],cn[size],kans[size];
+
+ int j,kk,l,m;
+ for(j=0;j<size;j++)
+ {
+ a[j]=1;
+ }
+ for(kk=0;kk<size;kk++)
+ {
+ b[kk]=sqrt(ones[kk]-inp[kk]);
+ }
+ for(l=0;l<size;l++)
+ {
+ c[l]=sqrt(inp[l]);
+
+ }
+ int x=0;
+ //double maxi;
+ //maxi=max_calc(c,size);
+ //printf("%lf",maxi);
+
+ while(max_calc(c,size)>eps)
+ {
+ int q,w,r;
+ for(q=0;q<size;q++)
+ {
+ an[q]=0.5*(a[q]+b[q]);
+ }
+ for(w=0;w<size;w++)
+ {
+ bn[w]=sqrt(a[w]*b[w]);
+ }
+ for(r=0;r<size;r++)
+ {
+ cn[r]=0.5*(a[r]-b[r]);
+ }
+ int x,y,z;
+ for(x=0;x<size;x++)
+ {
+ a[x]=an[x];
+ }
+ for(y=0;y<size;y++)
+ {
+ b[y]=bn[y];
+ }
+ for(z=0;z<size;z++)
+ {
+ c[z]=cn[z];
+ }
+ }
+ int q,w;
+ for(q=0;q<size;q++)
+ {
+ oup[q]=PI*(ones[q]/(2*a[q]));
+ }
+
+}
+/*
+int main()
+{
+ double m[3]={0.1,0.2,0.3};
+ dka(m,3);
+}
+*/
diff --git a/2.3-1/src/c/signalProcessing/sincd/dsincds.c b/2.3-1/src/c/signalProcessing/sincd/dsincds.c
new file mode 100644
index 00000000..1475d8de
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/sincd/dsincds.c
@@ -0,0 +1,99 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#include<stdio.h>
+#include<math.h>
+#include "sincd.h"
+//#define PI 3.14159265358979
+void dsincds(double n,double flg,double* oup)
+{
+ double npt=4*n;
+ int sz=4*n;
+ double PI=M_PI;
+ double pas=PI/npt;
+ double om[sz+1];
+ int i;
+ for(i=0;i<=sz;i++)
+ {
+ om[i]=i*pas;
+ }
+ double eps=pow(-1,(n-1));
+ double s1[sz+1],s2[sz+1];
+ double s[2*(sz)+1];
+ double sr[2*(sz)+1];
+ if(flg==1)
+ {
+ int j,k;
+ for(j=0;j<=4*n;j++)
+ {
+ s1[j]=sin(n*om[j]);
+ s2[j]=sin(om[j]);
+ }
+ s1[0]=n;
+ s2[0]=1;
+ s1[sz]=n*eps;
+ s2[sz]=1;
+
+ for(k=0;k<=4*n;k++)
+ {
+ s[k]=s1[k]/s2[k];
+ }
+
+ int x;
+ for(x=0;x<=4*n;x++)
+ {
+ oup[sz-x]=s[x];
+ }
+ int l;
+ for(l=4*n+1;l<=8*n;l++)
+ {
+ oup[l]=s[l-(sz)];
+ }
+ int m;
+ for(m=0;m<=8*n;m++)
+ {
+ oup[m]=oup[m]/n;
+ }
+ }
+ else
+ {
+ int a;
+ for(a=0;a<=4*n;a++)
+ {
+ om[a]=om[a]-(PI/(2*n));
+ }
+ int j,k;
+ for(j=0;j<=4*n;j++)
+ {
+ s1[j]=sin(n*om[j]);
+ s2[j]=sin(om[j]);
+ }
+ s1[2]=n;
+ s2[2]=1;
+ for(k=0;k<=4*n;k++)
+ {
+ s[k]=s1[k]/s2[k];
+ }
+ int m;
+ for(m=0;m<=4*n;m++)
+ {
+ oup[m]=(eps*s[m])/n;
+ }
+ int l;
+ for(l=4*n+1;l<=8*n;l++)
+ {
+ oup[l]=s[l-(sz)]/n;
+ }
+
+ }
+}
+
diff --git a/2.3-1/src/c/signalProcessing/sincd/int_sincd.h b/2.3-1/src/c/signalProcessing/sincd/int_sincd.h
new file mode 100644
index 00000000..a404978b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/sincd/int_sincd.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_SINCD_H__
+#define __INT_SINCD_H__
+
+#define u80sincdd2(n,flg,oup) u8sincds(n,flg,oup)
+
+#endif /* !__INT_SINCD_H__! */
diff --git a/2.3-1/src/c/signalProcessing/sincd/sincd.h b/2.3-1/src/c/signalProcessing/sincd/sincd.h
new file mode 100644
index 00000000..2df85a87
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/sincd/sincd.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __SINCD_H__
+#define __SINCD_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void u8sincds(int n,int flg,double* oup);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __SINCD_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/sincd/u8sincds.c b/2.3-1/src/c/signalProcessing/sincd/u8sincds.c
new file mode 100644
index 00000000..d03f48ae
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/sincd/u8sincds.c
@@ -0,0 +1,98 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#include<stdio.h>
+#include<math.h>
+#include "sincd.h"
+#define PI 3.14159265358979
+void u8sincds(int n,int flg,double* oup)
+{
+ double npt=4*n;
+ int sz=4*n;
+ double pas=PI/npt;
+ double om[sz+1];
+ int i;
+ //om[0]=0;
+ for(i=0;i<=sz;i++)
+ {
+ om[i]=i*pas;
+ }
+ double eps=pow(-1,(n-1));
+ double s1[sz+1],s2[sz+1];
+ double s[2*(sz)+1];
+ double sr[2*(sz)+1];
+ if(flg==1)
+ {
+ int j,k;
+ for(j=0;j<=4*n;j++)
+ {
+ s1[j]=sin(n*om[j]);
+ s2[j]=sin(om[j]);
+ }
+ s1[0]=n;
+ s2[0]=1;
+ s1[sz]=n*eps;
+ s2[sz]=1;
+
+ for(k=0;k<=4*n;k++)
+ {
+ s[k]=s1[k]/s2[k];
+ }
+
+ int x;
+ for(x=0;x<=4*n;x++)
+ {
+ oup[sz-x]=s[x];
+ }
+ int l;
+ for(l=4*n+1;l<=8*n;l++)
+ {
+ oup[l]=s[l-(sz)];
+ }
+ int m;
+ for(m=0;m<=8*n;m++)
+ {
+ oup[m]=oup[m]/n;
+ }
+ }
+ else
+ {
+ int a;
+ for(a=0;a<=4*n;a++)
+ {
+ om[a]=om[a]-(PI/(2*n));
+ }
+ int j,k;
+ for(j=0;j<=4*n;j++)
+ {
+ s1[j]=sin(n*om[j]);
+ s2[j]=sin(om[j]);
+ }
+ s1[2]=n;
+ s2[2]=1;
+ for(k=0;k<=4*n;k++)
+ {
+ s[k]=s1[k]/s2[k];
+ }
+ int m;
+ for(m=0;m<=4*n;m++)
+ {
+ oup[m]=(eps*s[m])/n;
+ }
+ int l;
+ for(l=4*n+1;l<=8*n;l++)
+ {
+ oup[l]=s[l-(sz)]/n;
+ }
+
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/dct/cdcta.c b/2.3-1/src/c/signalProcessing/transforms/dct/cdcta.c
new file mode 100644
index 00000000..5bc27929
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/dct/cdcta.c
@@ -0,0 +1,177 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "dct.h"
+#include "addition.h"
+#include "types.h"
+#include "floatComplex.h"
+/*#include "matrixMultiplication"*/
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void cdcta(floatComplex *in,int row,int col,int sign,floatComplex *out)
+{
+ int i,j,k,u,v;
+ int n;
+ int x,y;
+ float res,ress;
+ float re,z,q,m;
+ floatComplex accu = DoubleComplex(0, 0);
+ floatComplex temp,mm;
+ if(sign==-1)
+ {
+ if(row==1)
+ {
+ n=col;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=FloatComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ temp=in[y]*(cos(((M_PI)*(y+1-1./2.)*(x))/n));
+ out[x]=cadds(out[x],temp);
+ }
+ }
+ if(x==0)
+ out[x]*=1./(sqrt(n));
+ else
+ {
+ float res=2./n;
+ out[x]*=sqrt(res);
+ }
+ }
+ }
+ }
+ else
+ {
+ n=col*row;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=FloatComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ temp=FloatComplex(0,0);
+ mm=FloatComplex(0,0);
+ for(j=0;j<col;j++)
+ {
+ y=j*row+i;
+ z=(float)(((float)j+1.0/2.0)*(float)v);
+ q=(float)(M_PI/(float)col);
+ mm=in[y]*(cos(q*z));
+ temp=cadds(temp,mm);
+ }
+ z=(float)(((float)i+1.0/2.0)*(float)u);
+ q=(float)(M_PI/(float)row);
+ temp*=cos(q*z);
+ out[x]=cadds(out[x],temp);
+ }
+ if(u==0)
+ {
+ out[x]*=1./sqrt((float)row);
+ if(v==0)
+ out[x]*=1./sqrt((float)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ else
+ {
+ out[x]*=sqrt(2./row);
+ if(v==0)
+ out[x]*=1./sqrt((float)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ }
+ }
+ }
+ }
+ else if(sign==1)
+ {
+ n=col;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=FloatComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ {
+ q=res*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=cadds(out[x],in[y]*q);
+ }
+ else
+ {
+ q=ress*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=cadds(out[x],in[y]*q);
+ }
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=FloatComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ mm=FloatComplex(0,0);
+ temp=FloatComplex(0,0);
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ mm=in[j*row+i];
+ z=(float)(((float)v+1.0/2.0)*(float)j);
+ q=(float)(M_PI/(float)col);
+ mm=mm*(cos(q*z));
+ if(j==0)
+ temp=cadds(temp,mm*(1./sqrt((float)col)));
+ else
+ temp=cadds(temp,mm*sqrt(2./col));
+ }
+ z=(float)(((float)u+1.0/2.0)*(float)i);
+ q=(float)(M_PI/(float)row);
+ if(i==0)
+ out[x]=cadds(out[x],temp*((cos(z*q))*(1./sqrt(row))));
+ else
+ out[x]=cadds(out[x],temp*((cos(z*q))*sqrt(2./row)));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/dct/ddcta.c b/2.3-1/src/c/signalProcessing/transforms/dct/ddcta.c
new file mode 100644
index 00000000..3802c816
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/dct/ddcta.c
@@ -0,0 +1,160 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "dct.h"
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void ddcta(double *in,int row,int col,int sign,double *out)
+{
+ int i,j,k,u,v;
+ int n;
+ int x,y;
+ double res,ress;
+ double re,z,q,m;
+ if(sign==-1)
+ {
+ if(row==1)
+ {
+ n=col;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ out[x]+=in[y]*(cos(((M_PI)*(y+1-1./2.)*(x))/n));
+ }
+ }
+ if(x==0)
+ out[x]*=1./(sqrt(n));
+ else
+ {
+ double res=2./n;
+ out[x]*=sqrt(res);
+ }
+ }
+ }
+ }
+ else
+ {
+ n=col*row;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ for(j=0;j<col;j++)
+ {
+ m=(double)in[j*row+i];
+ z=(double)(((double)j+1.0/2.0)*(double)v);
+ q=(double)(M_PI/(double)col);
+ re+=m*(cos(q*z));
+ }
+ z=(double)(((double)i+1.0/2.0)*(double)u);
+ q=(double)(M_PI/(double)row);
+ out[x]+=re*(cos(q*z));
+ }
+ if(u==0)
+ {
+ out[x]/=sqrt((double)row);
+ if(v==0)
+ out[x]/=sqrt((double)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ else
+ {
+ out[x]*=sqrt(2./row);
+ if(v==0)
+ out[x]/=sqrt((double)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ }
+ }
+
+ }
+ }
+ else if(sign==1)
+ {
+ n=col;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ out[x]+=res*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ else
+ out[x]+=ress*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ m=(double)in[j*row+i];
+ z=(double)(((double)v+1.0/2.0)*(double)j);
+ q=(double)(M_PI/(double)col);
+ m=m*(cos(q*z));
+ if(j==0)
+ re+=m/sqrt((double)col);
+ else
+ re+=m*sqrt(2./col);
+ }
+ z=(double)(((double)u+1.0/2.0)*(double)i);
+ q=(double)(M_PI/(double)row);
+ if(i==0)
+ out[x]+=(re*(cos(z*q)))/sqrt((double)row);
+ else
+ out[x]+=(re*(cos(z*q))*sqrt(2./row));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/dct/sdcta.c b/2.3-1/src/c/signalProcessing/transforms/dct/sdcta.c
new file mode 100644
index 00000000..9f380e8b
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/dct/sdcta.c
@@ -0,0 +1,160 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "dct.h"
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void sdcta(float *in,int row,int col,int sign,float *out)
+{
+ int i,j,k,u,v;
+ int n;
+ int x,y;
+ float res,ress;
+ float re,z,q,m;
+ if(sign==-1)
+ {
+ if(row==1)
+ {
+ n=col;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ out[x]+=in[y]*(cos(((M_PI)*(y+1-1./2.)*(x))/n));
+ }
+ }
+ if(x==0)
+ out[x]*=1./(sqrt(n));
+ else
+ {
+ float res=2./n;
+ out[x]*=sqrt(res);
+ }
+ }
+ }
+ }
+ else
+ {
+ n=col*row;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ for(j=0;j<col;j++)
+ {
+ m=(float)in[j*row+i];
+ z=(float)(((float)j+1.0/2.0)*(float)v);
+ q=(float)(M_PI/(float)col);
+ re+=m*(cos(q*z));
+ }
+ z=(float)(((float)i+1.0/2.0)*(float)u);
+ q=(float)(M_PI/(float)row);
+ out[x]+=re*(cos(q*z));
+ }
+ if(u==0)
+ {
+ out[x]/=sqrt((float)row);
+ if(v==0)
+ out[x]/=sqrt((float)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ else
+ {
+ out[x]*=sqrt(2./row);
+ if(v==0)
+ out[x]/=sqrt((float)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ }
+ }
+
+ }
+ }
+ else if(sign==1)
+ {
+ n=col;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ out[x]+=res*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ else
+ out[x]+=ress*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ m=(float)in[j*row+i];
+ z=(float)(((float)v+1.0/2.0)*(float)j);
+ q=(float)(M_PI/(float)col);
+ m=m*(cos(q*z));
+ if(j==0)
+ re+=m/sqrt((float)col);
+ else
+ re+=m*sqrt(2./col);
+ }
+ z=(float)(((float)u+1.0/2.0)*(float)i);
+ q=(float)(M_PI/(float)row);
+ if(i==0)
+ out[x]+=(re*(cos(z*q)))/sqrt((float)row);
+ else
+ out[x]+=(re*(cos(z*q))*sqrt(2./row));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/dct/zdcta.c b/2.3-1/src/c/signalProcessing/transforms/dct/zdcta.c
new file mode 100644
index 00000000..0204d682
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/dct/zdcta.c
@@ -0,0 +1,177 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "dct.h"
+#include "addition.h"
+#include "types.h"
+#include "doubleComplex.h"
+/*#include "matrixMultiplication"*/
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void zdcta(doubleComplex *in,int row,int col,int sign,doubleComplex *out)
+{
+ int i,j,k,u,v;
+ int n;
+ int x,y;
+ double res,ress;
+ double re,z,q,m;
+ doubleComplex accu = DoubleComplex(0, 0);
+ doubleComplex temp,mm;
+ if(sign==-1)
+ {
+ if(row==1)
+ {
+ n=col;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=DoubleComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ temp=in[y]*(cos(((M_PI)*(y+1-1./2.)*(x))/n));
+ out[x]=zadds(out[x],temp);
+ }
+ }
+ if(x==0)
+ out[x]*=1./(sqrt(n));
+ else
+ {
+ double res=2./n;
+ out[x]*=sqrt(res);
+ }
+ }
+ }
+ }
+ else
+ {
+ n=col*row;
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=DoubleComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ temp=DoubleComplex(0,0);
+ mm=DoubleComplex(0,0);
+ for(j=0;j<col;j++)
+ {
+ y=j*row+i;
+ z=(double)(((double)j+1.0/2.0)*(double)v);
+ q=(double)(M_PI/(double)col);
+ mm=in[y]*(cos(q*z));
+ temp=zadds(temp,mm);
+ }
+ z=(double)(((double)i+1.0/2.0)*(double)u);
+ q=(double)(M_PI/(double)row);
+ temp*=cos(q*z);
+ out[x]=zadds(out[x],temp);
+ }
+ if(u==0)
+ {
+ out[x]*=1./sqrt((double)row);
+ if(v==0)
+ out[x]*=1./sqrt((double)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ else
+ {
+ out[x]*=sqrt(2./row);
+ if(v==0)
+ out[x]*=1./sqrt((double)col);
+ else
+ out[x]*=sqrt(2./col);
+ }
+ }
+ }
+ }
+ }
+ else if(sign==1)
+ {
+ n=col;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=DoubleComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ {
+ q=res*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=zadds(out[x],in[y]*q);
+ }
+ else
+ {
+ q=ress*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=zadds(out[x],in[y]*q);
+ }
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=DoubleComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ mm=DoubleComplex(0,0);
+ temp=DoubleComplex(0,0);
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ mm=in[j*row+i];
+ z=(double)(((double)v+1.0/2.0)*(double)j);
+ q=(double)(M_PI/(double)col);
+ mm=mm*(cos(q*z));
+ if(j==0)
+ temp=zadds(temp,mm*(1./sqrt((double)col)));
+ else
+ temp=zadds(temp,mm*sqrt(2./col));
+ }
+ z=(double)(((double)u+1.0/2.0)*(double)i);
+ q=(double)(M_PI/(double)row);
+ if(i==0)
+ out[x]=zadds(out[x],temp*((cos(z*q))*(1./sqrt(row))));
+ else
+ out[x]=zadds(out[x],temp*((cos(z*q))*sqrt(2./row)));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/idct/cidcta.c b/2.3-1/src/c/signalProcessing/transforms/idct/cidcta.c
new file mode 100644
index 00000000..ec0df0c7
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/idct/cidcta.c
@@ -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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "idct.h"
+#include "addition.h"
+#include "types.h"
+#include "floatComplex.h"
+/*#include "matrixMultiplication"*/
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void cidcta(floatComplex *in,int row,int col,floatComplex *out)
+{
+ int i,j,k,u,v;
+ int n=col;
+ int x,y;
+ float res,ress;
+ float re,z,q,m;
+ floatComplex accu = DoubleComplex(0, 0);
+ floatComplex temp,mm;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=FloatComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ {
+ q=res*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=cadds(out[x],in[y]*q);
+ }
+ else
+ {
+ q=ress*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=cadds(out[x],in[y]*q);
+ }
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=FloatComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ mm=FloatComplex(0,0);
+ temp=FloatComplex(0,0);
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ mm=in[j*row+i];
+ z=(float)(((float)v+1.0/2.0)*(float)j);
+ q=(float)(M_PI/(float)col);
+ mm=mm*(cos(q*z));
+ if(j==0)
+ temp=cadds(temp,mm*(1./sqrt((float)col)));
+ else
+ temp=cadds(temp,mm*sqrt(2./col));
+ }
+ z=(float)(((float)u+1.0/2.0)*(float)i);
+ q=(float)(M_PI/(float)row);
+ if(i==0)
+ out[x]=cadds(out[x],temp*((cos(z*q))*(1./sqrt(row))));
+ else
+ out[x]=cadds(out[x],temp*((cos(z*q))*sqrt(2./row)));
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/idct/didcta.c b/2.3-1/src/c/signalProcessing/transforms/idct/didcta.c
new file mode 100644
index 00000000..5f475160
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/idct/didcta.c
@@ -0,0 +1,83 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "idct.h"
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void didcta(double *in,int row,int col,double *out)
+{
+ int i,j,k,u,v;
+ int n=col;
+ int x,y;
+ double res,ress;
+ double re,z,q,m;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ out[x]+=res*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ else
+ out[x]+=ress*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ m=(double)in[j*row+i];
+ z=(double)(((double)v+1.0/2.0)*(double)j);
+ q=(double)(M_PI/(double)col);
+ m=m*(cos(q*z));
+ if(j==0)
+ re+=m/sqrt((double)col);
+ else
+ re+=m*sqrt(2./col);
+ }
+ z=(double)(((double)u+1.0/2.0)*(double)i);
+ q=(double)(M_PI/(double)row);
+ if(i==0)
+ out[x]+=(re*(cos(z*q)))/sqrt((double)row);
+ else
+ out[x]+=(re*(cos(z*q))*sqrt(2./row));
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/idct/sidcta.c b/2.3-1/src/c/signalProcessing/transforms/idct/sidcta.c
new file mode 100644
index 00000000..62f85da0
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/idct/sidcta.c
@@ -0,0 +1,83 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "idct.h"
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void sidcta(float *in,int row,int col,float *out)
+{
+ int i,j,k,u,v;
+ int n=col;
+ int x,y;
+ float res,ress;
+ float re,z,q,m;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ out[x]+=res*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ else
+ out[x]+=ress*in[y]*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=0;
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ m=(float)in[j*row+i];
+ z=(float)(((float)v+1.0/2.0)*(float)j);
+ q=(float)(M_PI/(float)col);
+ m=m*(cos(q*z));
+ if(j==0)
+ re+=m/sqrt((float)col);
+ else
+ re+=m*sqrt(2./col);
+ }
+ z=(float)(((float)u+1.0/2.0)*(float)i);
+ q=(float)(M_PI/(float)row);
+ if(i==0)
+ out[x]+=(re*(cos(z*q)))/sqrt((float)row);
+ else
+ out[x]+=(re*(cos(z*q))*sqrt(2./row));
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/transforms/idct/zidcta.c b/2.3-1/src/c/signalProcessing/transforms/idct/zidcta.c
new file mode 100644
index 00000000..2177b18c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/transforms/idct/zidcta.c
@@ -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: Ukasha Noor
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+
+#include "idct.h"
+#include "addition.h"
+#include "types.h"
+#include "doubleComplex.h"
+/*#include "matrixMultiplication"*/
+/*#include <fftw3.h>*/
+#include <math.h>
+
+void zidcta(doubleComplex *in,int row,int col,doubleComplex *out)
+{
+ int i,j,k,u,v;
+ int n=col;
+ int x,y;
+ double res,ress;
+ double re,z,q,m;
+ doubleComplex accu = DoubleComplex(0, 0);
+ doubleComplex temp,mm;
+ if(row==1)
+ {
+ res=1./sqrt(n);
+ ress=sqrt(2./n);
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=DoubleComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ if(y==0)
+ {
+ q=res*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=zadds(out[x],in[y]*q);
+ }
+ else
+ {
+ q=ress*(cos(((M_PI)*(j)*(v+1./2.))/n));
+ out[x]=zadds(out[x],in[y]*q);
+ }
+ }
+ }
+ }
+
+ }
+ }
+ else
+ {
+ for(u=0;u<row;u++)
+ {
+ for(v=0;v<col;v++)
+ {
+ x=v*row+u;
+ out[x]=DoubleComplex(0,0);
+ for(i=0;i<row;i++)
+ {
+ re=0;
+ mm=DoubleComplex(0,0);
+ temp=DoubleComplex(0,0);
+ for(j=0;j<col;j++)
+ {
+ y=row*j+i;
+ mm=in[j*row+i];
+ z=(double)(((double)v+1.0/2.0)*(double)j);
+ q=(double)(M_PI/(double)col);
+ mm=mm*(cos(q*z));
+ if(j==0)
+ temp=zadds(temp,mm*(1./sqrt((double)col)));
+ else
+ temp=zadds(temp,mm*sqrt(2./col));
+ }
+ z=(double)(((double)u+1.0/2.0)*(double)i);
+ q=(double)(M_PI/(double)row);
+ if(i==0)
+ out[x]=zadds(out[x],temp*((cos(z*q))*(1./sqrt(row))));
+ else
+ out[x]=zadds(out[x],temp*((cos(z*q))*sqrt(2./row)));
+ }
+ }
+ }
+ }
+}
diff --git a/2.3-1/src/c/signalProcessing/zpbutt/dzpbutts.c b/2.3-1/src/c/signalProcessing/zpbutt/dzpbutts.c
new file mode 100644
index 00000000..33f22af9
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpbutt/dzpbutts.c
@@ -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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+#include<math.h>
+#include "zpbutt.h"
+#define PI 3.14159265
+double dzpbutts(double n,double fl,doubleComplex* out)
+{
+ double e= PI/(2.0*(n));
+ int k;
+ double rl,cpx,gain;
+ for(k=1;k<=n;k++)
+ {
+ double v=2.0*(double)k+(n)-1.0;
+ rl=(fl)*cos(e*v);
+ cpx=(fl)*sin(e*v);
+ out[k-1]=DoubleComplex(rl,cpx);
+ }
+ gain=pow(fl,n);
+
+return gain;
+
+}
+
diff --git a/2.3-1/src/c/signalProcessing/zpbutt/int_zpbutt.h b/2.3-1/src/c/signalProcessing/zpbutt/int_zpbutt.h
new file mode 100644
index 00000000..72eae8a2
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpbutt/int_zpbutt.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_ZPBUTT_H__
+#define __INT_ZPBUTT_H__
+
+#define d0d0zpbuttzada(n,fl,out,gain) dzpbutts(n,fl,out,gain)
+
+#endif /* !INT_ZPBUTT_H__ */
+
diff --git a/2.3-1/src/c/signalProcessing/zpbutt/zpbutt.h b/2.3-1/src/c/signalProcessing/zpbutt/zpbutt.h
new file mode 100644
index 00000000..6883942c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpbutt/zpbutt.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __ZPBUTT_H__
+#define __ZPBUTT_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dzpbutts(double* n,double* fl,doublecomplex* out,double* gain);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
diff --git a/2.3-1/src/c/signalProcessing/zpch1/dzpch1s.c b/2.3-1/src/c/signalProcessing/zpch1/dzpch1s.c
new file mode 100644
index 00000000..ab7b6332
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpch1/dzpch1s.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 2017 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "zpch1.h"
+#include "multiplication.h"
+#include "conj.h"
+#include "abs.h"
+#define PI 3.14159265
+double dzpch1s(double N,double e,double wc,doubleComplex* out)
+{
+ doubleComplex accumulate,tp;
+ double B,r,R,gain,realVal;
+ double temp=sqrt(1+e*e);
+
+ B=pow((temp+1)/e,1/N);
+
+ r=wc*((B*B-1)/(2*B));
+ R=wc*((B*B+1)/(2*B));
+
+ int k;
+ double t1=1;
+ double t2=0;
+ accumulate=DoubleComplex(t1,t2);
+ for(k=0;k<N;k++)
+ {
+ double theta;
+ theta=(PI/2)+((2*k+1)*PI)/(2*N);
+ double xk,yk;
+ xk=r*cos(theta);
+ yk=R*sin(theta);
+ out[k]=DoubleComplex(xk,yk);
+ tp=DoubleComplex(xk,yk);
+ accumulate=zmuls(accumulate,tp);
+ }
+
+ realVal=zreals(accumulate);
+ gain=dabss(realVal);
+ if (N==2*(int)(N/2))
+ gain=gain/sqrt(1+e*e);
+return gain;
+
+}
+
diff --git a/2.3-1/src/c/signalProcessing/zpch1/int_zpch1.h b/2.3-1/src/c/signalProcessing/zpch1/int_zpch1.h
new file mode 100644
index 00000000..8933d1a2
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpch1/int_zpch1.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_ZPCH1_H__
+#define __INT_ZPCH1_H__
+
+#define d0d0d0zpch1z2d0(N,e,wc) dzpch1s(N,e,wc)
+
+#endif /* !INT_ZPCH1_H__! */
diff --git a/2.3-1/src/c/signalProcessing/zpch1/zpch1.h b/2.3-1/src/c/signalProcessing/zpch1/zpch1.h
new file mode 100644
index 00000000..fbe850cc
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpch1/zpch1.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __ZPCH1_H__
+#define __ZPCH1_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+double dzpch1s(double N,double e,double wc,doubleComplex* out);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __ZPCH1_H__ */
diff --git a/2.3-1/src/c/signalProcessing/zpch2/dzpch2s.c b/2.3-1/src/c/signalProcessing/zpch2/dzpch2s.c
new file mode 100644
index 00000000..22a46a64
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpch2/dzpch2s.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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#include<stdio.h>
+#include<math.h>
+#include "zpch2.h"
+#include "multiplication.h"
+#include "abs.h"
+#include "division.h"
+#define PI 3.14159265
+double dzpch2s(double N, double A, double omegar,doubleComplex* zeros,doubleComplex* poles)
+{
+ int k,j;
+ double e,xk,realVal,gain;
+ doubleComplex accumulate1,accumulate2,tp1,tp2;
+ accumulate1=DoubleComplex(1,0);
+ accumulate2=DoubleComplex(1,0);
+ int ct=0;
+ for(k=1;k<=N;k++)
+ {
+ if(k!=((N+1)/2))
+ {
+ ct++;
+ double num=PI*(2*k-1);
+ double den=2*N;
+ xk=cos(num/den);
+ double sk=omegar/xk;
+ zeros[k-1]=DoubleComplex(0,sk);
+ tp1=DoubleComplex(0,sk);
+ accumulate1=zmuls(accumulate1,tp1);
+ }
+ }
+ for(j=1;j<=N;j++)
+ {
+ double num=PI*(2*j-1);
+ double den=2*N;
+ double xk1=num/den;
+ double Gamma=pow((A+sqrt(A*A-1)),(1/N));
+ double alpha=-((Gamma-1/Gamma)/2)*sin(xk1);
+ double Beta=((Gamma+1/Gamma)/2)*cos(xk1);
+ double normal=alpha*alpha+Beta*Beta;
+ poles[j-1]=DoubleComplex((omegar*alpha)/normal,(omegar*Beta)/normal);
+ tp2=DoubleComplex((omegar*alpha)/normal,(omegar*Beta)/normal);
+ accumulate2=zmuls(accumulate2,tp2);
+ }
+ double qt;
+ double ra2=zreals(accumulate2);
+ double ra1=zreals(accumulate1);
+ qt=dldivs(ra1,ra2);
+ gain=dabss(qt);
+
+ return gain;
+
+}
+
diff --git a/2.3-1/src/c/signalProcessing/zpch2/int_zpch2.h b/2.3-1/src/c/signalProcessing/zpch2/int_zpch2.h
new file mode 100644
index 00000000..683a7614
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpch2/int_zpch2.h
@@ -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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __INT_ZPCH2_H__
+#define __INT_ZPCH2_H__
+
+#define d0d0d0zpch2z2z2(N,A,omegar,zeros,poles) dzpch2s(N,A,omegar,zeros,poles)
+
+#endif /* !INT_ZPCH2_H__! */
diff --git a/2.3-1/src/c/signalProcessing/zpch2/zpch2.h b/2.3-1/src/c/signalProcessing/zpch2/zpch2.h
new file mode 100644
index 00000000..0d191d5c
--- /dev/null
+++ b/2.3-1/src/c/signalProcessing/zpch2/zpch2.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+
+#ifndef __ZPCH2_H__
+#define __ZPCH2_H__
+#include "types.h"
+#include "doubleComplex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void dzpch2s(double N, double A, double omegar,doubleComplex* zeros,doubleComplex* poles);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __ZPCH2_H__ */
diff --git a/2.3-1/src/c/string/ascii/dasciia.c b/2.3-1/src/c/string/ascii/dasciia.c
new file mode 100644
index 00000000..d2452880
--- /dev/null
+++ b/2.3-1/src/c/string/ascii/dasciia.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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+#include "ascii.h"
+void dasciia(double* inp,int size,char* oup)
+{
+ int i;
+ for(i=0;i<size;i++)
+ {
+ oup[i]=(char)inp[i];
+ }
+}
diff --git a/2.3-1/src/c/string/ascii/gasciia.c b/2.3-1/src/c/string/ascii/gasciia.c
new file mode 100644
index 00000000..2cd80bfb
--- /dev/null
+++ b/2.3-1/src/c/string/ascii/gasciia.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
+ Author: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+/* This is the "asciiconv" function which converts the given string
+ into its ascii equivalent.
+*/
+#include "ascii.h"
+void gasciia(char *str,int size,int* oup)
+{
+
+ for(int i=0;i<size;i++)
+ {
+ *(oup+i)=(int)str[i];
+ }
+
+}
+
diff --git a/2.3-1/src/c/string/disp/zdispa.c b/2.3-1/src/c/string/disp/zdispa.c
index 5d085d32..bc71de4b 100644
--- a/2.3-1/src/c/string/disp/zdispa.c
+++ b/2.3-1/src/c/string/disp/zdispa.c
@@ -16,7 +16,7 @@ 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]));
+ for (j=0;j<columns;j++) printf(" %1.20lf + %1.20lfi " ,zreals(in[i+j*rows]) ,zimags(in[i+j*rows]));
printf("\n");
}
return 0;
diff --git a/2.3-1/src/c/string/includes/ascii.h b/2.3-1/src/c/string/includes/ascii.h
new file mode 100644
index 00000000..fcf969da
--- /dev/null
+++ b/2.3-1/src/c/string/includes/ascii.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __ASCII_H__
+#define __ASCII_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void gasciia(char* str,int size,int* oup);
+void dasciia(double* inp,int size,char* oup);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+#endif /*___ASCII_H__*/
diff --git a/2.3-1/src/c/string/includes/strchr.h b/2.3-1/src/c/string/includes/strchr.h
new file mode 100644
index 00000000..7e306413
--- /dev/null
+++ b/2.3-1/src/c/string/includes/strchr.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __STRCHR_H__
+#define __STRCHR_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void gstrchra(char* str,int size, char* key,int size2, char* out);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+#endif /*__STRCHR_H__*/
diff --git a/2.3-1/src/c/string/includes/strcspn.h b/2.3-1/src/c/string/includes/strcspn.h
new file mode 100644
index 00000000..aa91fb47
--- /dev/null
+++ b/2.3-1/src/c/string/includes/strcspn.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __STRCSPN_H__
+#define __STRCSPN_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint8 gstrcspna(char* str1,int size1,char* str2,int size2);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+#endif /* __STRCSPN_H */
diff --git a/2.3-1/src/c/string/includes/strncpy.h b/2.3-1/src/c/string/includes/strncpy.h
new file mode 100644
index 00000000..f2aa705b
--- /dev/null
+++ b/2.3-1/src/c/string/includes/strncpy.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __STRNCPY_H__
+#define __STRNCPY_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void gstrncpya(char* str,int size,double key,char* oup);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+#endif /*__STRNCPY_H__*/
diff --git a/2.3-1/src/c/string/includes/strspn.h b/2.3-1/src/c/string/includes/strspn.h
new file mode 100644
index 00000000..427caa4c
--- /dev/null
+++ b/2.3-1/src/c/string/includes/strspn.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __STRSPN_H__
+#define __STRSPN_H__
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint8 gstrspna(char* str1,int size1,char* str2,int size2);
+
+#ifdef __cplusplus
+}/* extern "C" */
+#endif
+
+#endif /* __STRSPN_H */
diff --git a/2.3-1/src/c/string/interfaces/int_ascii.h b/2.3-1/src/c/string/interfaces/int_ascii.h
new file mode 100644
index 00000000..87b1b125
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_ascii.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_ASCII_H__
+#define __INT_ASCII_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define g2asciiu82(str,size,oup) gasciia(str,size[1],oup)
+#define d2asciig2(inp,size,oup) dasciia(inp,size[1],oup)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_ASCII_H__*/
diff --git a/2.3-1/src/c/string/interfaces/int_strchr.h b/2.3-1/src/c/string/interfaces/int_strchr.h
new file mode 100644
index 00000000..8747545b
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_strchr.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_STRCHR_H__
+#define __INT_STRCHR_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define g2g2strchrg2(str,size,key,size2,out) gstrchra(str,size[1],key,size2[1],out)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_STRCHR_H__*/
diff --git a/2.3-1/src/c/string/interfaces/int_strcspn.h b/2.3-1/src/c/string/interfaces/int_strcspn.h
new file mode 100644
index 00000000..74c6379f
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_strcspn.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_STRCSPN_H__
+#define __INT_STRCSPN_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define g2g2strcspnu80(str1,size1,str2,size2) gstrcspna(str1,size1[1],str2,size2[1])
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_STRCSPN_H__*/
diff --git a/2.3-1/src/c/string/interfaces/int_strncpy.h b/2.3-1/src/c/string/interfaces/int_strncpy.h
new file mode 100644
index 00000000..e7ffdb42
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_strncpy.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_STRNCPY_H__
+#define __INT_STRNCPY_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define g2d0strncpyg2(str,size,key,oup) gstrncpya(str,size[1],key,oup)
+
+#ifdef __cplusplus
+} /* extern "C"*/
+#endif
+
+#endif /*__INT_STRNCPY_H__*/
+
diff --git a/2.3-1/src/c/string/interfaces/int_strspn.h b/2.3-1/src/c/string/interfaces/int_strspn.h
new file mode 100644
index 00000000..e4b06f72
--- /dev/null
+++ b/2.3-1/src/c/string/interfaces/int_strspn.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: Ankit Raj
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_STRSPN_H__
+#define __INT_STRSPN_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define g2g2strspnu80(str1,size1,str2,size2) gstrspna(str1,size1[1],str2,size2[1])
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __INT_STRSPN_H__*/
diff --git a/2.3-1/src/c/string/strchr/gstrchra.c b/2.3-1/src/c/string/strchr/gstrchra.c
new file mode 100644
index 00000000..f2f54359
--- /dev/null
+++ b/2.3-1/src/c/string/strchr/gstrchra.c
@@ -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: Ankit Raj
+ Email: toolbox@scilab.in
+*/
+#include <stdio.h>
+#include <string.h>
+#include "strchr.h"
+
+void gstrchra(char* str,int size,char* key,int size2,char* out)
+{
+ int ind,i=0,j,k;
+ for(j=0;j<size;j++)
+ {
+ if(str[j]==key[0])
+ {
+ ind=j;
+ break;
+ }
+ }
+ for(k=ind;k<size;k++)
+ {
+ out[i]=str[k];
+ i++;
+ }
+}
+
diff --git a/2.3-1/src/c/string/strcspn/gstrcspna.c b/2.3-1/src/c/string/strcspn/gstrcspna.c
new file mode 100644
index 00000000..0d8de11b
--- /dev/null
+++ b/2.3-1/src/c/string/strcspn/gstrcspna.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: Ankit Raj
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+#include<string.h>
+#include "strcspn.h"
+uint8 gstrcspna(char *str1,int size1,char *str2,int size2)
+{
+ int ind;
+ for(int i=0;i<=size1;i++)
+ {
+ for(int j=0;j<=size2;j++)
+ {
+ if(str2[j]==str1[i])
+ {
+ ind=j;
+ break;
+ }
+ }
+ }
+ return (ind+1);
+}
+/*int main()
+{
+ int n1,n2;
+ char inp1[100000],inp2[100000];
+ printf("Enter the length of the first string");
+ scanf("%d",&n1);
+ for(int i=0;i<=(n1+1);i++)
+ {
+ scanf("%c",&inp1[i]);
+ }
+ printf("Enter the length of the second string");
+ scanf("%d",&n2 );
+ for(int j=0;j<=(n2+1);j++)
+ {
+ scanf("%c",&inp2[j]);
+ }
+ strcspnfn(inp1,n1+1,inp2,n2+1);
+}
+*/
diff --git a/2.3-1/src/c/string/strncpy/gstrncpya.c b/2.3-1/src/c/string/strncpy/gstrncpya.c
new file mode 100644
index 00000000..92801985
--- /dev/null
+++ b/2.3-1/src/c/string/strncpy/gstrncpya.c
@@ -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
+ Organization: FOSSEE, IIT Bombay
+ Author: Ankit Raj
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+#include "strncpy.h"
+void gstrncpya(char *str,int size,double key,char *oup)
+{
+ int j;
+ char c;
+ for(j=0;j<key;j++)
+ {
+ c=str[j];
+ oup[j]=c;
+ }
+}
+
+
diff --git a/2.3-1/src/c/string/strspn/gstrspna.c b/2.3-1/src/c/string/strspn/gstrspna.c
new file mode 100644
index 00000000..af1acbb8
--- /dev/null
+++ b/2.3-1/src/c/string/strspn/gstrspna.c
@@ -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: Ankit Raj
+ Email: toolbox@scilab.in
+*/
+#include<stdio.h>
+#include "strspn.h"
+
+int maxg(int a,int b){
+ if(a>b) return a;
+ return b;
+}
+uint8 gstrspna(char *str1,int size1,char *str2,int size2)
+{
+ int i,j,ct=0,k=0,m=0;
+ for(i=0;i<size2;i++)
+ {
+ if(str1[0]==str2[i])
+ {
+ k=i;
+ ct=0;
+ j=0;
+ while(str1[j]==str2[k])
+ {
+ ct++;
+ j++;
+ k++;
+ if(j >= size1) break;
+ }
+ if(j==size1)
+ {
+ ct=ct-1;
+ }
+ m = maxg(m,ct);
+ }
+ }
+return m;
+}
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_blas.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_blas.h
new file mode 100644
index 00000000..7c427149
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_blas.h
@@ -0,0 +1,602 @@
+/* blas/gsl_blas.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/*
+ * Author: G. Jungman
+ */
+#ifndef __GSL_BLAS_H__
+#define __GSL_BLAS_H__
+
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+
+#include <gsl/gsl_blas_types.h>
+
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* ========================================================================
+ * Level 1
+ * ========================================================================
+ */
+
+int gsl_blas_sdsdot (float alpha,
+ const gsl_vector_float * X,
+ const gsl_vector_float * Y,
+ float * result
+ );
+
+int gsl_blas_dsdot (const gsl_vector_float * X,
+ const gsl_vector_float * Y,
+ double * result
+ );
+
+int gsl_blas_sdot (const gsl_vector_float * X,
+ const gsl_vector_float * Y,
+ float * result
+ );
+
+int gsl_blas_ddot (const gsl_vector * X,
+ const gsl_vector * Y,
+ double * result
+ );
+
+
+int gsl_blas_cdotu (const gsl_vector_complex_float * X,
+ const gsl_vector_complex_float * Y,
+ gsl_complex_float * dotu);
+
+int gsl_blas_cdotc (const gsl_vector_complex_float * X,
+ const gsl_vector_complex_float * Y,
+ gsl_complex_float * dotc);
+
+int gsl_blas_zdotu (const gsl_vector_complex * X,
+ const gsl_vector_complex * Y,
+ gsl_complex * dotu);
+
+int gsl_blas_zdotc (const gsl_vector_complex * X,
+ const gsl_vector_complex * Y,
+ gsl_complex * dotc);
+
+
+float gsl_blas_snrm2 (const gsl_vector_float * X);
+float gsl_blas_sasum (const gsl_vector_float * X);
+double gsl_blas_dnrm2 (const gsl_vector * X);
+double gsl_blas_dasum (const gsl_vector * X);
+float gsl_blas_scnrm2 (const gsl_vector_complex_float * X);
+float gsl_blas_scasum (const gsl_vector_complex_float * X);
+double gsl_blas_dznrm2 (const gsl_vector_complex * X);
+double gsl_blas_dzasum (const gsl_vector_complex * X);
+
+
+CBLAS_INDEX_t gsl_blas_isamax (const gsl_vector_float * X);
+CBLAS_INDEX_t gsl_blas_idamax (const gsl_vector * X);
+CBLAS_INDEX_t gsl_blas_icamax (const gsl_vector_complex_float * X);
+CBLAS_INDEX_t gsl_blas_izamax (const gsl_vector_complex * X);
+
+
+int gsl_blas_sswap (gsl_vector_float * X,
+ gsl_vector_float * Y);
+
+int gsl_blas_scopy (const gsl_vector_float * X,
+ gsl_vector_float * Y);
+
+int gsl_blas_saxpy (float alpha,
+ const gsl_vector_float * X,
+ gsl_vector_float * Y);
+
+int gsl_blas_dswap (gsl_vector * X,
+ gsl_vector * Y);
+
+int gsl_blas_dcopy (const gsl_vector * X,
+ gsl_vector * Y);
+
+int gsl_blas_daxpy (double alpha,
+ const gsl_vector * X,
+ gsl_vector * Y);
+
+int gsl_blas_cswap (gsl_vector_complex_float * X,
+ gsl_vector_complex_float * Y);
+
+int gsl_blas_ccopy (const gsl_vector_complex_float * X,
+ gsl_vector_complex_float * Y);
+
+int gsl_blas_caxpy (const gsl_complex_float alpha,
+ const gsl_vector_complex_float * X,
+ gsl_vector_complex_float * Y);
+
+int gsl_blas_zswap (gsl_vector_complex * X,
+ gsl_vector_complex * Y);
+
+int gsl_blas_zcopy (const gsl_vector_complex * X,
+ gsl_vector_complex * Y);
+
+int gsl_blas_zaxpy (const gsl_complex alpha,
+ const gsl_vector_complex * X,
+ gsl_vector_complex * Y);
+
+
+int gsl_blas_srotg (float a[], float b[], float c[], float s[]);
+
+int gsl_blas_srotmg (float d1[], float d2[], float b1[], float b2, float P[]);
+
+int gsl_blas_srot (gsl_vector_float * X,
+ gsl_vector_float * Y,
+ float c, float s);
+
+int gsl_blas_srotm (gsl_vector_float * X,
+ gsl_vector_float * Y,
+ const float P[]);
+
+int gsl_blas_drotg (double a[], double b[], double c[], double s[]);
+
+int gsl_blas_drotmg (double d1[], double d2[], double b1[],
+ double b2, double P[]);
+
+int gsl_blas_drot (gsl_vector * X,
+ gsl_vector * Y,
+ const double c, const double s);
+
+int gsl_blas_drotm (gsl_vector * X,
+ gsl_vector * Y,
+ const double P[]);
+
+
+void gsl_blas_sscal (float alpha, gsl_vector_float * X);
+void gsl_blas_dscal (double alpha, gsl_vector * X);
+void gsl_blas_cscal (const gsl_complex_float alpha, gsl_vector_complex_float * X);
+void gsl_blas_zscal (const gsl_complex alpha, gsl_vector_complex * X);
+void gsl_blas_csscal (float alpha, gsl_vector_complex_float * X);
+void gsl_blas_zdscal (double alpha, gsl_vector_complex * X);
+
+
+/* ===========================================================================
+ * Level 2
+ * ===========================================================================
+ */
+
+/*
+ * Routines with standard 4 prefixes (S, D, C, Z)
+ */
+int gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA,
+ float alpha,
+ const gsl_matrix_float * A,
+ const gsl_vector_float * X,
+ float beta,
+ gsl_vector_float * Y);
+
+int gsl_blas_strmv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix_float * A,
+ gsl_vector_float * X);
+
+int gsl_blas_strsv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix_float * A,
+ gsl_vector_float * X);
+
+int gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA,
+ double alpha,
+ const gsl_matrix * A,
+ const gsl_vector * X,
+ double beta,
+ gsl_vector * Y);
+
+int gsl_blas_dtrmv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix * A,
+ gsl_vector * X);
+
+int gsl_blas_dtrsv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix * A,
+ gsl_vector * X);
+
+int gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_vector_complex_float * X,
+ const gsl_complex_float beta,
+ gsl_vector_complex_float * Y);
+
+int gsl_blas_ctrmv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix_complex_float * A,
+ gsl_vector_complex_float * X);
+
+int gsl_blas_ctrsv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix_complex_float * A,
+ gsl_vector_complex_float * X);
+
+int gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_vector_complex * X,
+ const gsl_complex beta,
+ gsl_vector_complex * Y);
+
+int gsl_blas_ztrmv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix_complex * A,
+ gsl_vector_complex * X);
+
+int gsl_blas_ztrsv (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag,
+ const gsl_matrix_complex * A,
+ gsl_vector_complex *X);
+
+/*
+ * Routines with S and D prefixes only
+ */
+int gsl_blas_ssymv (CBLAS_UPLO_t Uplo,
+ float alpha,
+ const gsl_matrix_float * A,
+ const gsl_vector_float * X,
+ float beta,
+ gsl_vector_float * Y);
+
+int gsl_blas_sger (float alpha,
+ const gsl_vector_float * X,
+ const gsl_vector_float * Y,
+ gsl_matrix_float * A);
+
+int gsl_blas_ssyr (CBLAS_UPLO_t Uplo,
+ float alpha,
+ const gsl_vector_float * X,
+ gsl_matrix_float * A);
+
+int gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo,
+ float alpha,
+ const gsl_vector_float * X,
+ const gsl_vector_float * Y,
+ gsl_matrix_float * A);
+
+int gsl_blas_dsymv (CBLAS_UPLO_t Uplo,
+ double alpha,
+ const gsl_matrix * A,
+ const gsl_vector * X,
+ double beta,
+ gsl_vector * Y);
+int gsl_blas_dger (double alpha,
+ const gsl_vector * X,
+ const gsl_vector * Y,
+ gsl_matrix * A);
+
+int gsl_blas_dsyr (CBLAS_UPLO_t Uplo,
+ double alpha,
+ const gsl_vector * X,
+ gsl_matrix * A);
+
+int gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo,
+ double alpha,
+ const gsl_vector * X,
+ const gsl_vector * Y,
+ gsl_matrix * A);
+
+/*
+ * Routines with C and Z prefixes only
+ */
+
+int gsl_blas_chemv (CBLAS_UPLO_t Uplo,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_vector_complex_float * X,
+ const gsl_complex_float beta,
+ gsl_vector_complex_float * Y);
+
+int gsl_blas_cgeru (const gsl_complex_float alpha,
+ const gsl_vector_complex_float * X,
+ const gsl_vector_complex_float * Y,
+ gsl_matrix_complex_float * A);
+
+int gsl_blas_cgerc (const gsl_complex_float alpha,
+ const gsl_vector_complex_float * X,
+ const gsl_vector_complex_float * Y,
+ gsl_matrix_complex_float * A);
+
+int gsl_blas_cher (CBLAS_UPLO_t Uplo,
+ float alpha,
+ const gsl_vector_complex_float * X,
+ gsl_matrix_complex_float * A);
+
+int gsl_blas_cher2 (CBLAS_UPLO_t Uplo,
+ const gsl_complex_float alpha,
+ const gsl_vector_complex_float * X,
+ const gsl_vector_complex_float * Y,
+ gsl_matrix_complex_float * A);
+
+int gsl_blas_zhemv (CBLAS_UPLO_t Uplo,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_vector_complex * X,
+ const gsl_complex beta,
+ gsl_vector_complex * Y);
+
+int gsl_blas_zgeru (const gsl_complex alpha,
+ const gsl_vector_complex * X,
+ const gsl_vector_complex * Y,
+ gsl_matrix_complex * A);
+
+int gsl_blas_zgerc (const gsl_complex alpha,
+ const gsl_vector_complex * X,
+ const gsl_vector_complex * Y,
+ gsl_matrix_complex * A);
+
+int gsl_blas_zher (CBLAS_UPLO_t Uplo,
+ double alpha,
+ const gsl_vector_complex * X,
+ gsl_matrix_complex * A);
+
+int gsl_blas_zher2 (CBLAS_UPLO_t Uplo,
+ const gsl_complex alpha,
+ const gsl_vector_complex * X,
+ const gsl_vector_complex * Y,
+ gsl_matrix_complex * A);
+
+/*
+ * ===========================================================================
+ * Prototypes for level 3 BLAS
+ * ===========================================================================
+ */
+
+/*
+ * Routines with standard 4 prefixes (S, D, C, Z)
+ */
+int gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA,
+ CBLAS_TRANSPOSE_t TransB,
+ float alpha,
+ const gsl_matrix_float * A,
+ const gsl_matrix_float * B,
+ float beta,
+ gsl_matrix_float * C);
+
+int gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo,
+ float alpha,
+ const gsl_matrix_float * A,
+ const gsl_matrix_float * B,
+ float beta,
+ gsl_matrix_float * C);
+
+int gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
+ float alpha,
+ const gsl_matrix_float * A,
+ float beta,
+ gsl_matrix_float * C);
+
+int gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans,
+ float alpha,
+ const gsl_matrix_float * A,
+ const gsl_matrix_float * B,
+ float beta,
+ gsl_matrix_float * C);
+
+int gsl_blas_strmm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ float alpha,
+ const gsl_matrix_float * A,
+ gsl_matrix_float * B);
+
+int gsl_blas_strsm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ float alpha,
+ const gsl_matrix_float * A,
+ gsl_matrix_float * B);
+
+int gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA,
+ CBLAS_TRANSPOSE_t TransB,
+ double alpha,
+ const gsl_matrix * A,
+ const gsl_matrix * B,
+ double beta,
+ gsl_matrix * C);
+
+int gsl_blas_dsymm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo,
+ double alpha,
+ const gsl_matrix * A,
+ const gsl_matrix * B,
+ double beta,
+ gsl_matrix * C);
+
+int gsl_blas_dsyrk (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ double alpha,
+ const gsl_matrix * A,
+ double beta,
+ gsl_matrix * C);
+
+int gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ double alpha,
+ const gsl_matrix * A,
+ const gsl_matrix * B,
+ double beta,
+ gsl_matrix * C);
+
+int gsl_blas_dtrmm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ double alpha,
+ const gsl_matrix * A,
+ gsl_matrix * B);
+
+int gsl_blas_dtrsm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ double alpha,
+ const gsl_matrix * A,
+ gsl_matrix * B);
+
+int gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA,
+ CBLAS_TRANSPOSE_t TransB,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_matrix_complex_float * B,
+ const gsl_complex_float beta,
+ gsl_matrix_complex_float * C);
+
+int gsl_blas_csymm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_matrix_complex_float * B,
+ const gsl_complex_float beta,
+ gsl_matrix_complex_float * C);
+
+int gsl_blas_csyrk (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_complex_float beta,
+ gsl_matrix_complex_float * C);
+
+int gsl_blas_csyr2k (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_matrix_complex_float * B,
+ const gsl_complex_float beta,
+ gsl_matrix_complex_float * C);
+
+int gsl_blas_ctrmm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ gsl_matrix_complex_float * B);
+
+int gsl_blas_ctrsm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ gsl_matrix_complex_float * B);
+
+int gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA,
+ CBLAS_TRANSPOSE_t TransB,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_matrix_complex * B,
+ const gsl_complex beta,
+ gsl_matrix_complex * C);
+
+int gsl_blas_zsymm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_matrix_complex * B,
+ const gsl_complex beta,
+ gsl_matrix_complex * C);
+
+int gsl_blas_zsyrk (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_complex beta,
+ gsl_matrix_complex * C);
+
+int gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_matrix_complex * B,
+ const gsl_complex beta,
+ gsl_matrix_complex *C);
+
+int gsl_blas_ztrmm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ gsl_matrix_complex * B);
+
+int gsl_blas_ztrsm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA,
+ CBLAS_DIAG_t Diag,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ gsl_matrix_complex * B);
+
+/*
+ * Routines with prefixes C and Z only
+ */
+int gsl_blas_chemm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_matrix_complex_float * B,
+ const gsl_complex_float beta,
+ gsl_matrix_complex_float * C);
+
+int gsl_blas_cherk (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ float alpha,
+ const gsl_matrix_complex_float * A,
+ float beta,
+ gsl_matrix_complex_float * C);
+
+int gsl_blas_cher2k (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ const gsl_complex_float alpha,
+ const gsl_matrix_complex_float * A,
+ const gsl_matrix_complex_float * B,
+ float beta,
+ gsl_matrix_complex_float * C);
+
+int gsl_blas_zhemm (CBLAS_SIDE_t Side,
+ CBLAS_UPLO_t Uplo,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_matrix_complex * B,
+ const gsl_complex beta,
+ gsl_matrix_complex * C);
+
+int gsl_blas_zherk (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ double alpha,
+ const gsl_matrix_complex * A,
+ double beta,
+ gsl_matrix_complex * C);
+
+int gsl_blas_zher2k (CBLAS_UPLO_t Uplo,
+ CBLAS_TRANSPOSE_t Trans,
+ const gsl_complex alpha,
+ const gsl_matrix_complex * A,
+ const gsl_matrix_complex * B,
+ double beta,
+ gsl_matrix_complex * C);
+
+
+__END_DECLS
+
+#endif /* __GSL_BLAS_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_blas_types.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_blas_types.h
new file mode 100644
index 00000000..923edb31
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_blas_types.h
@@ -0,0 +1,54 @@
+/* blas/gsl_blas_types.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/*
+ * Author: G. Jungman
+ */
+/* Based on draft BLAST C interface specification [Jul 7 1998]
+ */
+#ifndef __GSL_BLAS_TYPES_H__
+#define __GSL_BLAS_TYPES_H__
+
+#include <gsl/gsl_cblas.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef CBLAS_INDEX CBLAS_INDEX_t;
+typedef enum CBLAS_ORDER CBLAS_ORDER_t;
+typedef enum CBLAS_TRANSPOSE CBLAS_TRANSPOSE_t;
+typedef enum CBLAS_UPLO CBLAS_UPLO_t;
+typedef enum CBLAS_DIAG CBLAS_DIAG_t;
+typedef enum CBLAS_SIDE CBLAS_SIDE_t;
+
+/* typedef gsl_complex COMPLEX; */
+
+__END_DECLS
+
+
+#endif /* __GSL_BLAS_TYPES_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block.h
new file mode 100644
index 00000000..f1f9ef87
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block.h
@@ -0,0 +1,24 @@
+#ifndef __GSL_BLOCK_H__
+#define __GSL_BLOCK_H__
+
+#include <gsl/gsl_block_complex_long_double.h>
+#include <gsl/gsl_block_complex_double.h>
+#include <gsl/gsl_block_complex_float.h>
+
+#include <gsl/gsl_block_long_double.h>
+#include <gsl/gsl_block_double.h>
+#include <gsl/gsl_block_float.h>
+
+#include <gsl/gsl_block_ulong.h>
+#include <gsl/gsl_block_long.h>
+
+#include <gsl/gsl_block_uint.h>
+#include <gsl/gsl_block_int.h>
+
+#include <gsl/gsl_block_ushort.h>
+#include <gsl/gsl_block_short.h>
+
+#include <gsl/gsl_block_uchar.h>
+#include <gsl/gsl_block_char.h>
+
+#endif /* __GSL_BLOCK_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_char.h
new file mode 100644
index 00000000..70bf969f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_char.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_CHAR_H__
+#define __GSL_BLOCK_CHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_char_struct
+{
+ size_t size;
+ char *data;
+};
+
+typedef struct gsl_block_char_struct gsl_block_char;
+
+gsl_block_char *gsl_block_char_alloc (const size_t n);
+gsl_block_char *gsl_block_char_calloc (const size_t n);
+void gsl_block_char_free (gsl_block_char * b);
+
+int gsl_block_char_fread (FILE * stream, gsl_block_char * b);
+int gsl_block_char_fwrite (FILE * stream, const gsl_block_char * b);
+int gsl_block_char_fscanf (FILE * stream, gsl_block_char * b);
+int gsl_block_char_fprintf (FILE * stream, const gsl_block_char * b, const char *format);
+
+int gsl_block_char_raw_fread (FILE * stream, char * b, const size_t n, const size_t stride);
+int gsl_block_char_raw_fwrite (FILE * stream, const char * b, const size_t n, const size_t stride);
+int gsl_block_char_raw_fscanf (FILE * stream, char * b, const size_t n, const size_t stride);
+int gsl_block_char_raw_fprintf (FILE * stream, const char * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_char_size (const gsl_block_char * b);
+char * gsl_block_char_data (const gsl_block_char * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_CHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_double.h
new file mode 100644
index 00000000..bcf66c08
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_double.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_complex_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_COMPLEX_DOUBLE_H__
+#define __GSL_BLOCK_COMPLEX_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_complex_struct
+{
+ size_t size;
+ double *data;
+};
+
+typedef struct gsl_block_complex_struct gsl_block_complex;
+
+gsl_block_complex *gsl_block_complex_alloc (const size_t n);
+gsl_block_complex *gsl_block_complex_calloc (const size_t n);
+void gsl_block_complex_free (gsl_block_complex * b);
+
+int gsl_block_complex_fread (FILE * stream, gsl_block_complex * b);
+int gsl_block_complex_fwrite (FILE * stream, const gsl_block_complex * b);
+int gsl_block_complex_fscanf (FILE * stream, gsl_block_complex * b);
+int gsl_block_complex_fprintf (FILE * stream, const gsl_block_complex * b, const char *format);
+
+int gsl_block_complex_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride);
+int gsl_block_complex_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride);
+int gsl_block_complex_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride);
+int gsl_block_complex_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_complex_size (const gsl_block_complex * b);
+double * gsl_block_complex_data (const gsl_block_complex * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_COMPLEX_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_float.h
new file mode 100644
index 00000000..03595dc9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_float.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_complex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_COMPLEX_FLOAT_H__
+#define __GSL_BLOCK_COMPLEX_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_complex_float_struct
+{
+ size_t size;
+ float *data;
+};
+
+typedef struct gsl_block_complex_float_struct gsl_block_complex_float;
+
+gsl_block_complex_float *gsl_block_complex_float_alloc (const size_t n);
+gsl_block_complex_float *gsl_block_complex_float_calloc (const size_t n);
+void gsl_block_complex_float_free (gsl_block_complex_float * b);
+
+int gsl_block_complex_float_fread (FILE * stream, gsl_block_complex_float * b);
+int gsl_block_complex_float_fwrite (FILE * stream, const gsl_block_complex_float * b);
+int gsl_block_complex_float_fscanf (FILE * stream, gsl_block_complex_float * b);
+int gsl_block_complex_float_fprintf (FILE * stream, const gsl_block_complex_float * b, const char *format);
+
+int gsl_block_complex_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride);
+int gsl_block_complex_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride);
+int gsl_block_complex_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride);
+int gsl_block_complex_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_complex_float_size (const gsl_block_complex_float * b);
+float * gsl_block_complex_float_data (const gsl_block_complex_float * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_COMPLEX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_long_double.h
new file mode 100644
index 00000000..eb0c6051
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_complex_long_double.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_complex_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__
+#define __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_complex_long_double_struct
+{
+ size_t size;
+ long double *data;
+};
+
+typedef struct gsl_block_complex_long_double_struct gsl_block_complex_long_double;
+
+gsl_block_complex_long_double *gsl_block_complex_long_double_alloc (const size_t n);
+gsl_block_complex_long_double *gsl_block_complex_long_double_calloc (const size_t n);
+void gsl_block_complex_long_double_free (gsl_block_complex_long_double * b);
+
+int gsl_block_complex_long_double_fread (FILE * stream, gsl_block_complex_long_double * b);
+int gsl_block_complex_long_double_fwrite (FILE * stream, const gsl_block_complex_long_double * b);
+int gsl_block_complex_long_double_fscanf (FILE * stream, gsl_block_complex_long_double * b);
+int gsl_block_complex_long_double_fprintf (FILE * stream, const gsl_block_complex_long_double * b, const char *format);
+
+int gsl_block_complex_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride);
+int gsl_block_complex_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride);
+int gsl_block_complex_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride);
+int gsl_block_complex_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_complex_long_double_size (const gsl_block_complex_long_double * b);
+long double * gsl_block_complex_long_double_data (const gsl_block_complex_long_double * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_COMPLEX_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_double.h
new file mode 100644
index 00000000..3a95f4d5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_double.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_DOUBLE_H__
+#define __GSL_BLOCK_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_struct
+{
+ size_t size;
+ double *data;
+};
+
+typedef struct gsl_block_struct gsl_block;
+
+gsl_block *gsl_block_alloc (const size_t n);
+gsl_block *gsl_block_calloc (const size_t n);
+void gsl_block_free (gsl_block * b);
+
+int gsl_block_fread (FILE * stream, gsl_block * b);
+int gsl_block_fwrite (FILE * stream, const gsl_block * b);
+int gsl_block_fscanf (FILE * stream, gsl_block * b);
+int gsl_block_fprintf (FILE * stream, const gsl_block * b, const char *format);
+
+int gsl_block_raw_fread (FILE * stream, double * b, const size_t n, const size_t stride);
+int gsl_block_raw_fwrite (FILE * stream, const double * b, const size_t n, const size_t stride);
+int gsl_block_raw_fscanf (FILE * stream, double * b, const size_t n, const size_t stride);
+int gsl_block_raw_fprintf (FILE * stream, const double * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_size (const gsl_block * b);
+double * gsl_block_data (const gsl_block * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_float.h
new file mode 100644
index 00000000..f1c3fb35
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_float.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_FLOAT_H__
+#define __GSL_BLOCK_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_float_struct
+{
+ size_t size;
+ float *data;
+};
+
+typedef struct gsl_block_float_struct gsl_block_float;
+
+gsl_block_float *gsl_block_float_alloc (const size_t n);
+gsl_block_float *gsl_block_float_calloc (const size_t n);
+void gsl_block_float_free (gsl_block_float * b);
+
+int gsl_block_float_fread (FILE * stream, gsl_block_float * b);
+int gsl_block_float_fwrite (FILE * stream, const gsl_block_float * b);
+int gsl_block_float_fscanf (FILE * stream, gsl_block_float * b);
+int gsl_block_float_fprintf (FILE * stream, const gsl_block_float * b, const char *format);
+
+int gsl_block_float_raw_fread (FILE * stream, float * b, const size_t n, const size_t stride);
+int gsl_block_float_raw_fwrite (FILE * stream, const float * b, const size_t n, const size_t stride);
+int gsl_block_float_raw_fscanf (FILE * stream, float * b, const size_t n, const size_t stride);
+int gsl_block_float_raw_fprintf (FILE * stream, const float * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_float_size (const gsl_block_float * b);
+float * gsl_block_float_data (const gsl_block_float * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_int.h
new file mode 100644
index 00000000..2213f470
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_int.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_INT_H__
+#define __GSL_BLOCK_INT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_int_struct
+{
+ size_t size;
+ int *data;
+};
+
+typedef struct gsl_block_int_struct gsl_block_int;
+
+gsl_block_int *gsl_block_int_alloc (const size_t n);
+gsl_block_int *gsl_block_int_calloc (const size_t n);
+void gsl_block_int_free (gsl_block_int * b);
+
+int gsl_block_int_fread (FILE * stream, gsl_block_int * b);
+int gsl_block_int_fwrite (FILE * stream, const gsl_block_int * b);
+int gsl_block_int_fscanf (FILE * stream, gsl_block_int * b);
+int gsl_block_int_fprintf (FILE * stream, const gsl_block_int * b, const char *format);
+
+int gsl_block_int_raw_fread (FILE * stream, int * b, const size_t n, const size_t stride);
+int gsl_block_int_raw_fwrite (FILE * stream, const int * b, const size_t n, const size_t stride);
+int gsl_block_int_raw_fscanf (FILE * stream, int * b, const size_t n, const size_t stride);
+int gsl_block_int_raw_fprintf (FILE * stream, const int * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_int_size (const gsl_block_int * b);
+int * gsl_block_int_data (const gsl_block_int * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long.h
new file mode 100644
index 00000000..0c30aa5e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_LONG_H__
+#define __GSL_BLOCK_LONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_long_struct
+{
+ size_t size;
+ long *data;
+};
+
+typedef struct gsl_block_long_struct gsl_block_long;
+
+gsl_block_long *gsl_block_long_alloc (const size_t n);
+gsl_block_long *gsl_block_long_calloc (const size_t n);
+void gsl_block_long_free (gsl_block_long * b);
+
+int gsl_block_long_fread (FILE * stream, gsl_block_long * b);
+int gsl_block_long_fwrite (FILE * stream, const gsl_block_long * b);
+int gsl_block_long_fscanf (FILE * stream, gsl_block_long * b);
+int gsl_block_long_fprintf (FILE * stream, const gsl_block_long * b, const char *format);
+
+int gsl_block_long_raw_fread (FILE * stream, long * b, const size_t n, const size_t stride);
+int gsl_block_long_raw_fwrite (FILE * stream, const long * b, const size_t n, const size_t stride);
+int gsl_block_long_raw_fscanf (FILE * stream, long * b, const size_t n, const size_t stride);
+int gsl_block_long_raw_fprintf (FILE * stream, const long * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_long_size (const gsl_block_long * b);
+long * gsl_block_long_data (const gsl_block_long * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_LONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long_double.h
new file mode 100644
index 00000000..639cd815
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_long_double.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_LONG_DOUBLE_H__
+#define __GSL_BLOCK_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_long_double_struct
+{
+ size_t size;
+ long double *data;
+};
+
+typedef struct gsl_block_long_double_struct gsl_block_long_double;
+
+gsl_block_long_double *gsl_block_long_double_alloc (const size_t n);
+gsl_block_long_double *gsl_block_long_double_calloc (const size_t n);
+void gsl_block_long_double_free (gsl_block_long_double * b);
+
+int gsl_block_long_double_fread (FILE * stream, gsl_block_long_double * b);
+int gsl_block_long_double_fwrite (FILE * stream, const gsl_block_long_double * b);
+int gsl_block_long_double_fscanf (FILE * stream, gsl_block_long_double * b);
+int gsl_block_long_double_fprintf (FILE * stream, const gsl_block_long_double * b, const char *format);
+
+int gsl_block_long_double_raw_fread (FILE * stream, long double * b, const size_t n, const size_t stride);
+int gsl_block_long_double_raw_fwrite (FILE * stream, const long double * b, const size_t n, const size_t stride);
+int gsl_block_long_double_raw_fscanf (FILE * stream, long double * b, const size_t n, const size_t stride);
+int gsl_block_long_double_raw_fprintf (FILE * stream, const long double * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_long_double_size (const gsl_block_long_double * b);
+long double * gsl_block_long_double_data (const gsl_block_long_double * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_short.h
new file mode 100644
index 00000000..97447755
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_short.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_SHORT_H__
+#define __GSL_BLOCK_SHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_short_struct
+{
+ size_t size;
+ short *data;
+};
+
+typedef struct gsl_block_short_struct gsl_block_short;
+
+gsl_block_short *gsl_block_short_alloc (const size_t n);
+gsl_block_short *gsl_block_short_calloc (const size_t n);
+void gsl_block_short_free (gsl_block_short * b);
+
+int gsl_block_short_fread (FILE * stream, gsl_block_short * b);
+int gsl_block_short_fwrite (FILE * stream, const gsl_block_short * b);
+int gsl_block_short_fscanf (FILE * stream, gsl_block_short * b);
+int gsl_block_short_fprintf (FILE * stream, const gsl_block_short * b, const char *format);
+
+int gsl_block_short_raw_fread (FILE * stream, short * b, const size_t n, const size_t stride);
+int gsl_block_short_raw_fwrite (FILE * stream, const short * b, const size_t n, const size_t stride);
+int gsl_block_short_raw_fscanf (FILE * stream, short * b, const size_t n, const size_t stride);
+int gsl_block_short_raw_fprintf (FILE * stream, const short * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_short_size (const gsl_block_short * b);
+short * gsl_block_short_data (const gsl_block_short * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_SHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uchar.h
new file mode 100644
index 00000000..58cf789d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uchar.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_UCHAR_H__
+#define __GSL_BLOCK_UCHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_uchar_struct
+{
+ size_t size;
+ unsigned char *data;
+};
+
+typedef struct gsl_block_uchar_struct gsl_block_uchar;
+
+gsl_block_uchar *gsl_block_uchar_alloc (const size_t n);
+gsl_block_uchar *gsl_block_uchar_calloc (const size_t n);
+void gsl_block_uchar_free (gsl_block_uchar * b);
+
+int gsl_block_uchar_fread (FILE * stream, gsl_block_uchar * b);
+int gsl_block_uchar_fwrite (FILE * stream, const gsl_block_uchar * b);
+int gsl_block_uchar_fscanf (FILE * stream, gsl_block_uchar * b);
+int gsl_block_uchar_fprintf (FILE * stream, const gsl_block_uchar * b, const char *format);
+
+int gsl_block_uchar_raw_fread (FILE * stream, unsigned char * b, const size_t n, const size_t stride);
+int gsl_block_uchar_raw_fwrite (FILE * stream, const unsigned char * b, const size_t n, const size_t stride);
+int gsl_block_uchar_raw_fscanf (FILE * stream, unsigned char * b, const size_t n, const size_t stride);
+int gsl_block_uchar_raw_fprintf (FILE * stream, const unsigned char * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_uchar_size (const gsl_block_uchar * b);
+unsigned char * gsl_block_uchar_data (const gsl_block_uchar * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_UCHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uint.h
new file mode 100644
index 00000000..52cf2cbe
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_uint.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_UINT_H__
+#define __GSL_BLOCK_UINT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_uint_struct
+{
+ size_t size;
+ unsigned int *data;
+};
+
+typedef struct gsl_block_uint_struct gsl_block_uint;
+
+gsl_block_uint *gsl_block_uint_alloc (const size_t n);
+gsl_block_uint *gsl_block_uint_calloc (const size_t n);
+void gsl_block_uint_free (gsl_block_uint * b);
+
+int gsl_block_uint_fread (FILE * stream, gsl_block_uint * b);
+int gsl_block_uint_fwrite (FILE * stream, const gsl_block_uint * b);
+int gsl_block_uint_fscanf (FILE * stream, gsl_block_uint * b);
+int gsl_block_uint_fprintf (FILE * stream, const gsl_block_uint * b, const char *format);
+
+int gsl_block_uint_raw_fread (FILE * stream, unsigned int * b, const size_t n, const size_t stride);
+int gsl_block_uint_raw_fwrite (FILE * stream, const unsigned int * b, const size_t n, const size_t stride);
+int gsl_block_uint_raw_fscanf (FILE * stream, unsigned int * b, const size_t n, const size_t stride);
+int gsl_block_uint_raw_fprintf (FILE * stream, const unsigned int * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_uint_size (const gsl_block_uint * b);
+unsigned int * gsl_block_uint_data (const gsl_block_uint * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_UINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ulong.h
new file mode 100644
index 00000000..863ff475
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ulong.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_ULONG_H__
+#define __GSL_BLOCK_ULONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_ulong_struct
+{
+ size_t size;
+ unsigned long *data;
+};
+
+typedef struct gsl_block_ulong_struct gsl_block_ulong;
+
+gsl_block_ulong *gsl_block_ulong_alloc (const size_t n);
+gsl_block_ulong *gsl_block_ulong_calloc (const size_t n);
+void gsl_block_ulong_free (gsl_block_ulong * b);
+
+int gsl_block_ulong_fread (FILE * stream, gsl_block_ulong * b);
+int gsl_block_ulong_fwrite (FILE * stream, const gsl_block_ulong * b);
+int gsl_block_ulong_fscanf (FILE * stream, gsl_block_ulong * b);
+int gsl_block_ulong_fprintf (FILE * stream, const gsl_block_ulong * b, const char *format);
+
+int gsl_block_ulong_raw_fread (FILE * stream, unsigned long * b, const size_t n, const size_t stride);
+int gsl_block_ulong_raw_fwrite (FILE * stream, const unsigned long * b, const size_t n, const size_t stride);
+int gsl_block_ulong_raw_fscanf (FILE * stream, unsigned long * b, const size_t n, const size_t stride);
+int gsl_block_ulong_raw_fprintf (FILE * stream, const unsigned long * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_ulong_size (const gsl_block_ulong * b);
+unsigned long * gsl_block_ulong_data (const gsl_block_ulong * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_ULONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ushort.h
new file mode 100644
index 00000000..24ad7dbf
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_block_ushort.h
@@ -0,0 +1,65 @@
+/* block/gsl_block_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BLOCK_USHORT_H__
+#define __GSL_BLOCK_USHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_block_ushort_struct
+{
+ size_t size;
+ unsigned short *data;
+};
+
+typedef struct gsl_block_ushort_struct gsl_block_ushort;
+
+gsl_block_ushort *gsl_block_ushort_alloc (const size_t n);
+gsl_block_ushort *gsl_block_ushort_calloc (const size_t n);
+void gsl_block_ushort_free (gsl_block_ushort * b);
+
+int gsl_block_ushort_fread (FILE * stream, gsl_block_ushort * b);
+int gsl_block_ushort_fwrite (FILE * stream, const gsl_block_ushort * b);
+int gsl_block_ushort_fscanf (FILE * stream, gsl_block_ushort * b);
+int gsl_block_ushort_fprintf (FILE * stream, const gsl_block_ushort * b, const char *format);
+
+int gsl_block_ushort_raw_fread (FILE * stream, unsigned short * b, const size_t n, const size_t stride);
+int gsl_block_ushort_raw_fwrite (FILE * stream, const unsigned short * b, const size_t n, const size_t stride);
+int gsl_block_ushort_raw_fscanf (FILE * stream, unsigned short * b, const size_t n, const size_t stride);
+int gsl_block_ushort_raw_fprintf (FILE * stream, const unsigned short * b, const size_t n, const size_t stride, const char *format);
+
+size_t gsl_block_ushort_size (const gsl_block_ushort * b);
+unsigned short * gsl_block_ushort_data (const gsl_block_ushort * b);
+
+__END_DECLS
+
+#endif /* __GSL_BLOCK_USHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_bspline.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_bspline.h
new file mode 100644
index 00000000..ac813776
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_bspline.h
@@ -0,0 +1,122 @@
+/* bspline/gsl_bspline.h
+ *
+ * Copyright (C) 2006 Patrick Alken
+ * Copyright (C) 2008 Rhys Ulerich
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_BSPLINE_H__
+#define __GSL_BSPLINE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t k; /* spline order */
+ size_t km1; /* k - 1 (polynomial order) */
+ size_t l; /* number of polynomial pieces on interval */
+ size_t nbreak; /* number of breakpoints (l + 1) */
+ size_t n; /* number of bspline basis functions (l + k - 1) */
+
+ gsl_vector *knots; /* knots vector */
+ gsl_vector *deltal; /* left delta */
+ gsl_vector *deltar; /* right delta */
+ gsl_vector *B; /* temporary spline results */
+
+ /* bspline derivative parameters */
+ gsl_matrix *A; /* work matrix */
+ gsl_matrix *dB; /* temporary derivative results */
+} gsl_bspline_workspace;
+
+#ifndef GSL_DISABLE_DEPRECATED
+
+typedef struct
+{
+ size_t k; /* spline order */
+ gsl_matrix *A; /* work matrix */
+ gsl_matrix *dB; /* temporary derivative results */
+} gsl_bspline_deriv_workspace;
+
+gsl_bspline_deriv_workspace *gsl_bspline_deriv_alloc(const size_t k);
+void gsl_bspline_deriv_free(gsl_bspline_deriv_workspace *w);
+
+#endif /* !GSL_DISABLE_DEPRECATED */
+
+gsl_bspline_workspace *
+gsl_bspline_alloc(const size_t k, const size_t nbreak);
+
+void gsl_bspline_free(gsl_bspline_workspace *w);
+
+size_t gsl_bspline_ncoeffs(gsl_bspline_workspace * w);
+size_t gsl_bspline_order(gsl_bspline_workspace * w);
+size_t gsl_bspline_nbreak(gsl_bspline_workspace * w);
+double gsl_bspline_breakpoint(size_t i, gsl_bspline_workspace * w);
+double gsl_bspline_greville_abscissa(size_t i, gsl_bspline_workspace *w);
+
+int
+gsl_bspline_knots(const gsl_vector *breakpts, gsl_bspline_workspace *w);
+
+int gsl_bspline_knots_uniform(const double a, const double b,
+ gsl_bspline_workspace *w);
+
+int
+gsl_bspline_knots_greville(const gsl_vector *abscissae,
+ gsl_bspline_workspace *w,
+ double *abserr);
+
+int
+gsl_bspline_eval(const double x, gsl_vector *B,
+ gsl_bspline_workspace *w);
+
+int
+gsl_bspline_eval_nonzero(const double x,
+ gsl_vector *Bk,
+ size_t *istart,
+ size_t *iend,
+ gsl_bspline_workspace *w);
+
+int
+gsl_bspline_deriv_eval(const double x,
+ const size_t nderiv,
+ gsl_matrix *dB,
+ gsl_bspline_workspace *w);
+
+int
+gsl_bspline_deriv_eval_nonzero(const double x,
+ const size_t nderiv,
+ gsl_matrix *dB,
+ size_t *istart,
+ size_t *iend,
+ gsl_bspline_workspace *w);
+
+__END_DECLS
+
+#endif /* __GSL_BSPLINE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_cblas.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_cblas.h
new file mode 100644
index 00000000..e90e3b03
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_cblas.h
@@ -0,0 +1,606 @@
+/* blas/gsl_cblas.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* This is a copy of the CBLAS standard header.
+ * We carry this around so we do not have to
+ * break our model for flexible BLAS functionality.
+ */
+
+#ifndef __GSL_CBLAS_H__
+#define __GSL_CBLAS_H__
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+#else
+#define __BEGIN_DECLS /* empty */
+#define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/*
+ * Enumerated and derived types
+ */
+#define CBLAS_INDEX size_t /* this may vary between platforms */
+
+enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
+enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
+enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
+enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
+enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
+
+/*
+ * ===========================================================================
+ * Prototypes for level 1 BLAS functions (complex are recast as routines)
+ * ===========================================================================
+ */
+float cblas_sdsdot(const int N, const float alpha, const float *X,
+ const int incX, const float *Y, const int incY);
+double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
+ const int incY);
+float cblas_sdot(const int N, const float *X, const int incX,
+ const float *Y, const int incY);
+double cblas_ddot(const int N, const double *X, const int incX,
+ const double *Y, const int incY);
+
+/*
+ * Functions having prefixes Z and C only
+ */
+void cblas_cdotu_sub(const int N, const void *X, const int incX,
+ const void *Y, const int incY, void *dotu);
+void cblas_cdotc_sub(const int N, const void *X, const int incX,
+ const void *Y, const int incY, void *dotc);
+
+void cblas_zdotu_sub(const int N, const void *X, const int incX,
+ const void *Y, const int incY, void *dotu);
+void cblas_zdotc_sub(const int N, const void *X, const int incX,
+ const void *Y, const int incY, void *dotc);
+
+
+/*
+ * Functions having prefixes S D SC DZ
+ */
+float cblas_snrm2(const int N, const float *X, const int incX);
+float cblas_sasum(const int N, const float *X, const int incX);
+
+double cblas_dnrm2(const int N, const double *X, const int incX);
+double cblas_dasum(const int N, const double *X, const int incX);
+
+float cblas_scnrm2(const int N, const void *X, const int incX);
+float cblas_scasum(const int N, const void *X, const int incX);
+
+double cblas_dznrm2(const int N, const void *X, const int incX);
+double cblas_dzasum(const int N, const void *X, const int incX);
+
+
+/*
+ * Functions having standard 4 prefixes (S D C Z)
+ */
+CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX);
+CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
+CBLAS_INDEX cblas_icamax(const int N, const void *X, const int incX);
+CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX);
+
+/*
+ * ===========================================================================
+ * Prototypes for level 1 BLAS routines
+ * ===========================================================================
+ */
+
+/*
+ * Routines with standard 4 prefixes (s, d, c, z)
+ */
+void cblas_sswap(const int N, float *X, const int incX,
+ float *Y, const int incY);
+void cblas_scopy(const int N, const float *X, const int incX,
+ float *Y, const int incY);
+void cblas_saxpy(const int N, const float alpha, const float *X,
+ const int incX, float *Y, const int incY);
+
+void cblas_dswap(const int N, double *X, const int incX,
+ double *Y, const int incY);
+void cblas_dcopy(const int N, const double *X, const int incX,
+ double *Y, const int incY);
+void cblas_daxpy(const int N, const double alpha, const double *X,
+ const int incX, double *Y, const int incY);
+
+void cblas_cswap(const int N, void *X, const int incX,
+ void *Y, const int incY);
+void cblas_ccopy(const int N, const void *X, const int incX,
+ void *Y, const int incY);
+void cblas_caxpy(const int N, const void *alpha, const void *X,
+ const int incX, void *Y, const int incY);
+
+void cblas_zswap(const int N, void *X, const int incX,
+ void *Y, const int incY);
+void cblas_zcopy(const int N, const void *X, const int incX,
+ void *Y, const int incY);
+void cblas_zaxpy(const int N, const void *alpha, const void *X,
+ const int incX, void *Y, const int incY);
+
+
+/*
+ * Routines with S and D prefix only
+ */
+void cblas_srotg(float *a, float *b, float *c, float *s);
+void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
+void cblas_srot(const int N, float *X, const int incX,
+ float *Y, const int incY, const float c, const float s);
+void cblas_srotm(const int N, float *X, const int incX,
+ float *Y, const int incY, const float *P);
+
+void cblas_drotg(double *a, double *b, double *c, double *s);
+void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
+void cblas_drot(const int N, double *X, const int incX,
+ double *Y, const int incY, const double c, const double s);
+void cblas_drotm(const int N, double *X, const int incX,
+ double *Y, const int incY, const double *P);
+
+
+/*
+ * Routines with S D C Z CS and ZD prefixes
+ */
+void cblas_sscal(const int N, const float alpha, float *X, const int incX);
+void cblas_dscal(const int N, const double alpha, double *X, const int incX);
+void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
+void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
+void cblas_csscal(const int N, const float alpha, void *X, const int incX);
+void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
+
+/*
+ * ===========================================================================
+ * Prototypes for level 2 BLAS
+ * ===========================================================================
+ */
+
+/*
+ * Routines with standard 4 prefixes (S, D, C, Z)
+ */
+void cblas_sgemv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const float alpha, const float *A, const int lda,
+ const float *X, const int incX, const float beta,
+ float *Y, const int incY);
+void cblas_sgbmv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const int KL, const int KU, const float alpha,
+ const float *A, const int lda, const float *X,
+ const int incX, const float beta, float *Y, const int incY);
+void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const float *A, const int lda,
+ float *X, const int incX);
+void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const float *A, const int lda,
+ float *X, const int incX);
+void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const float *Ap, float *X, const int incX);
+void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const float *A, const int lda, float *X,
+ const int incX);
+void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const float *A, const int lda,
+ float *X, const int incX);
+void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const float *Ap, float *X, const int incX);
+
+void cblas_dgemv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const double alpha, const double *A, const int lda,
+ const double *X, const int incX, const double beta,
+ double *Y, const int incY);
+void cblas_dgbmv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const int KL, const int KU, const double alpha,
+ const double *A, const int lda, const double *X,
+ const int incX, const double beta, double *Y, const int incY);
+void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const double *A, const int lda,
+ double *X, const int incX);
+void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const double *A, const int lda,
+ double *X, const int incX);
+void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const double *Ap, double *X, const int incX);
+void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const double *A, const int lda, double *X,
+ const int incX);
+void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const double *A, const int lda,
+ double *X, const int incX);
+void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const double *Ap, double *X, const int incX);
+
+void cblas_cgemv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ const void *X, const int incX, const void *beta,
+ void *Y, const int incY);
+void cblas_cgbmv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const int KL, const int KU, const void *alpha,
+ const void *A, const int lda, const void *X,
+ const int incX, const void *beta, void *Y, const int incY);
+void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *A, const int lda,
+ void *X, const int incX);
+void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const void *A, const int lda,
+ void *X, const int incX);
+void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *Ap, void *X, const int incX);
+void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *A, const int lda, void *X,
+ const int incX);
+void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const void *A, const int lda,
+ void *X, const int incX);
+void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *Ap, void *X, const int incX);
+
+void cblas_zgemv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ const void *X, const int incX, const void *beta,
+ void *Y, const int incY);
+void cblas_zgbmv(const enum CBLAS_ORDER order,
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
+ const int KL, const int KU, const void *alpha,
+ const void *A, const int lda, const void *X,
+ const int incX, const void *beta, void *Y, const int incY);
+void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *A, const int lda,
+ void *X, const int incX);
+void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const void *A, const int lda,
+ void *X, const int incX);
+void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *Ap, void *X, const int incX);
+void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *A, const int lda, void *X,
+ const int incX);
+void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const int K, const void *A, const int lda,
+ void *X, const int incX);
+void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
+ const int N, const void *Ap, void *X, const int incX);
+
+
+/*
+ * Routines with S and D prefixes only
+ */
+void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const float *A,
+ const int lda, const float *X, const int incX,
+ const float beta, float *Y, const int incY);
+void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const int K, const float alpha, const float *A,
+ const int lda, const float *X, const int incX,
+ const float beta, float *Y, const int incY);
+void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const float *Ap,
+ const float *X, const int incX,
+ const float beta, float *Y, const int incY);
+void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
+ const float alpha, const float *X, const int incX,
+ const float *Y, const int incY, float *A, const int lda);
+void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const float *X,
+ const int incX, float *A, const int lda);
+void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const float *X,
+ const int incX, float *Ap);
+void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const float *X,
+ const int incX, const float *Y, const int incY, float *A,
+ const int lda);
+void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const float *X,
+ const int incX, const float *Y, const int incY, float *A);
+
+void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const double *A,
+ const int lda, const double *X, const int incX,
+ const double beta, double *Y, const int incY);
+void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const int K, const double alpha, const double *A,
+ const int lda, const double *X, const int incX,
+ const double beta, double *Y, const int incY);
+void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const double *Ap,
+ const double *X, const int incX,
+ const double beta, double *Y, const int incY);
+void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
+ const double alpha, const double *X, const int incX,
+ const double *Y, const int incY, double *A, const int lda);
+void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const double *X,
+ const int incX, double *A, const int lda);
+void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const double *X,
+ const int incX, double *Ap);
+void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const double *X,
+ const int incX, const double *Y, const int incY, double *A,
+ const int lda);
+void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const double *X,
+ const int incX, const double *Y, const int incY, double *A);
+
+
+/*
+ * Routines with C and Z prefixes only
+ */
+void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const void *alpha, const void *A,
+ const int lda, const void *X, const int incX,
+ const void *beta, void *Y, const int incY);
+void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const int K, const void *alpha, const void *A,
+ const int lda, const void *X, const int incX,
+ const void *beta, void *Y, const int incY);
+void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const void *alpha, const void *Ap,
+ const void *X, const int incX,
+ const void *beta, void *Y, const int incY);
+void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *A, const int lda);
+void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *A, const int lda);
+void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const void *X, const int incX,
+ void *A, const int lda);
+void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const float alpha, const void *X,
+ const int incX, void *A);
+void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *A, const int lda);
+void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *Ap);
+
+void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const void *alpha, const void *A,
+ const int lda, const void *X, const int incX,
+ const void *beta, void *Y, const int incY);
+void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const int K, const void *alpha, const void *A,
+ const int lda, const void *X, const int incX,
+ const void *beta, void *Y, const int incY);
+void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const void *alpha, const void *Ap,
+ const void *X, const int incX,
+ const void *beta, void *Y, const int incY);
+void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *A, const int lda);
+void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *A, const int lda);
+void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const void *X, const int incX,
+ void *A, const int lda);
+void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
+ const int N, const double alpha, const void *X,
+ const int incX, void *A);
+void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *A, const int lda);
+void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
+ const void *alpha, const void *X, const int incX,
+ const void *Y, const int incY, void *Ap);
+
+/*
+ * ===========================================================================
+ * Prototypes for level 3 BLAS
+ * ===========================================================================
+ */
+
+/*
+ * Routines with standard 4 prefixes (S, D, C, Z)
+ */
+void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+ const int K, const float alpha, const float *A,
+ const int lda, const float *B, const int ldb,
+ const float beta, float *C, const int ldc);
+void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
+ const float alpha, const float *A, const int lda,
+ const float *B, const int ldb, const float beta,
+ float *C, const int ldc);
+void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const float alpha, const float *A, const int lda,
+ const float beta, float *C, const int ldc);
+void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const float alpha, const float *A, const int lda,
+ const float *B, const int ldb, const float beta,
+ float *C, const int ldc);
+void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const float alpha, const float *A, const int lda,
+ float *B, const int ldb);
+void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const float alpha, const float *A, const int lda,
+ float *B, const int ldb);
+
+void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+ const int K, const double alpha, const double *A,
+ const int lda, const double *B, const int ldb,
+ const double beta, double *C, const int ldc);
+void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
+ const double alpha, const double *A, const int lda,
+ const double *B, const int ldb, const double beta,
+ double *C, const int ldc);
+void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const double alpha, const double *A, const int lda,
+ const double beta, double *C, const int ldc);
+void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const double alpha, const double *A, const int lda,
+ const double *B, const int ldb, const double beta,
+ double *C, const int ldc);
+void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const double alpha, const double *A, const int lda,
+ double *B, const int ldb);
+void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const double alpha, const double *A, const int lda,
+ double *B, const int ldb);
+
+void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+ const int K, const void *alpha, const void *A,
+ const int lda, const void *B, const int ldb,
+ const void *beta, void *C, const int ldc);
+void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const void *beta,
+ void *C, const int ldc);
+void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const void *alpha, const void *A, const int lda,
+ const void *beta, void *C, const int ldc);
+void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const void *beta,
+ void *C, const int ldc);
+void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ void *B, const int ldb);
+void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ void *B, const int ldb);
+
+void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
+ const int K, const void *alpha, const void *A,
+ const int lda, const void *B, const int ldb,
+ const void *beta, void *C, const int ldc);
+void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const void *beta,
+ void *C, const int ldc);
+void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const void *alpha, const void *A, const int lda,
+ const void *beta, void *C, const int ldc);
+void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const void *beta,
+ void *C, const int ldc);
+void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ void *B, const int ldb);
+void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
+ const enum CBLAS_DIAG Diag, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ void *B, const int ldb);
+
+
+/*
+ * Routines with prefixes C and Z only
+ */
+void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const void *beta,
+ void *C, const int ldc);
+void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const float alpha, const void *A, const int lda,
+ const float beta, void *C, const int ldc);
+void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const float beta,
+ void *C, const int ldc);
+
+void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const void *beta,
+ void *C, const int ldc);
+void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const double alpha, const void *A, const int lda,
+ const double beta, void *C, const int ldc);
+void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
+ const void *alpha, const void *A, const int lda,
+ const void *B, const int ldb, const double beta,
+ void *C, const int ldc);
+
+void cblas_xerbla(int p, const char *rout, const char *form, ...);
+
+__END_DECLS
+
+#endif /* __GSL_CBLAS_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_cdf.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_cdf.h
new file mode 100644
index 00000000..2bc3fed5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_cdf.h
@@ -0,0 +1,170 @@
+/* cdf/gsl_cdf.h
+ *
+ * Copyright (C) 2002 Jason H. Stover.
+ *
+ * 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 3 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.
+ */
+
+/* Author: J. Stover */
+
+#ifndef __GSL_CDF_H__
+#define __GSL_CDF_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_cdf_ugaussian_P (const double x);
+double gsl_cdf_ugaussian_Q (const double x);
+
+double gsl_cdf_ugaussian_Pinv (const double P);
+double gsl_cdf_ugaussian_Qinv (const double Q);
+
+double gsl_cdf_gaussian_P (const double x, const double sigma);
+double gsl_cdf_gaussian_Q (const double x, const double sigma);
+
+double gsl_cdf_gaussian_Pinv (const double P, const double sigma);
+double gsl_cdf_gaussian_Qinv (const double Q, const double sigma);
+
+double gsl_cdf_gamma_P (const double x, const double a, const double b);
+double gsl_cdf_gamma_Q (const double x, const double a, const double b);
+
+double gsl_cdf_gamma_Pinv (const double P, const double a, const double b);
+double gsl_cdf_gamma_Qinv (const double Q, const double a, const double b);
+
+double gsl_cdf_cauchy_P (const double x, const double a);
+double gsl_cdf_cauchy_Q (const double x, const double a);
+
+double gsl_cdf_cauchy_Pinv (const double P, const double a);
+double gsl_cdf_cauchy_Qinv (const double Q, const double a);
+
+double gsl_cdf_laplace_P (const double x, const double a);
+double gsl_cdf_laplace_Q (const double x, const double a);
+
+double gsl_cdf_laplace_Pinv (const double P, const double a);
+double gsl_cdf_laplace_Qinv (const double Q, const double a);
+
+double gsl_cdf_rayleigh_P (const double x, const double sigma);
+double gsl_cdf_rayleigh_Q (const double x, const double sigma);
+
+double gsl_cdf_rayleigh_Pinv (const double P, const double sigma);
+double gsl_cdf_rayleigh_Qinv (const double Q, const double sigma);
+
+double gsl_cdf_chisq_P (const double x, const double nu);
+double gsl_cdf_chisq_Q (const double x, const double nu);
+
+double gsl_cdf_chisq_Pinv (const double P, const double nu);
+double gsl_cdf_chisq_Qinv (const double Q, const double nu);
+
+double gsl_cdf_exponential_P (const double x, const double mu);
+double gsl_cdf_exponential_Q (const double x, const double mu);
+
+double gsl_cdf_exponential_Pinv (const double P, const double mu);
+double gsl_cdf_exponential_Qinv (const double Q, const double mu);
+
+double gsl_cdf_exppow_P (const double x, const double a, const double b);
+double gsl_cdf_exppow_Q (const double x, const double a, const double b);
+
+double gsl_cdf_tdist_P (const double x, const double nu);
+double gsl_cdf_tdist_Q (const double x, const double nu);
+
+double gsl_cdf_tdist_Pinv (const double P, const double nu);
+double gsl_cdf_tdist_Qinv (const double Q, const double nu);
+
+double gsl_cdf_fdist_P (const double x, const double nu1, const double nu2);
+double gsl_cdf_fdist_Q (const double x, const double nu1, const double nu2);
+
+double gsl_cdf_fdist_Pinv (const double P, const double nu1, const double nu2);
+double gsl_cdf_fdist_Qinv (const double Q, const double nu1, const double nu2);
+
+double gsl_cdf_beta_P (const double x, const double a, const double b);
+double gsl_cdf_beta_Q (const double x, const double a, const double b);
+
+double gsl_cdf_beta_Pinv (const double P, const double a, const double b);
+double gsl_cdf_beta_Qinv (const double Q, const double a, const double b);
+
+double gsl_cdf_flat_P (const double x, const double a, const double b);
+double gsl_cdf_flat_Q (const double x, const double a, const double b);
+
+double gsl_cdf_flat_Pinv (const double P, const double a, const double b);
+double gsl_cdf_flat_Qinv (const double Q, const double a, const double b);
+
+double gsl_cdf_lognormal_P (const double x, const double zeta, const double sigma);
+double gsl_cdf_lognormal_Q (const double x, const double zeta, const double sigma);
+
+double gsl_cdf_lognormal_Pinv (const double P, const double zeta, const double sigma);
+double gsl_cdf_lognormal_Qinv (const double Q, const double zeta, const double sigma);
+
+double gsl_cdf_gumbel1_P (const double x, const double a, const double b);
+double gsl_cdf_gumbel1_Q (const double x, const double a, const double b);
+
+double gsl_cdf_gumbel1_Pinv (const double P, const double a, const double b);
+double gsl_cdf_gumbel1_Qinv (const double Q, const double a, const double b);
+
+double gsl_cdf_gumbel2_P (const double x, const double a, const double b);
+double gsl_cdf_gumbel2_Q (const double x, const double a, const double b);
+
+double gsl_cdf_gumbel2_Pinv (const double P, const double a, const double b);
+double gsl_cdf_gumbel2_Qinv (const double Q, const double a, const double b);
+
+double gsl_cdf_weibull_P (const double x, const double a, const double b);
+double gsl_cdf_weibull_Q (const double x, const double a, const double b);
+
+double gsl_cdf_weibull_Pinv (const double P, const double a, const double b);
+double gsl_cdf_weibull_Qinv (const double Q, const double a, const double b);
+
+double gsl_cdf_pareto_P (const double x, const double a, const double b);
+double gsl_cdf_pareto_Q (const double x, const double a, const double b);
+
+double gsl_cdf_pareto_Pinv (const double P, const double a, const double b);
+double gsl_cdf_pareto_Qinv (const double Q, const double a, const double b);
+
+double gsl_cdf_logistic_P (const double x, const double a);
+double gsl_cdf_logistic_Q (const double x, const double a);
+
+double gsl_cdf_logistic_Pinv (const double P, const double a);
+double gsl_cdf_logistic_Qinv (const double Q, const double a);
+
+double gsl_cdf_binomial_P (const unsigned int k, const double p, const unsigned int n);
+double gsl_cdf_binomial_Q (const unsigned int k, const double p, const unsigned int n);
+
+double gsl_cdf_poisson_P (const unsigned int k, const double mu);
+double gsl_cdf_poisson_Q (const unsigned int k, const double mu);
+
+double gsl_cdf_geometric_P (const unsigned int k, const double p);
+double gsl_cdf_geometric_Q (const unsigned int k, const double p);
+
+double gsl_cdf_negative_binomial_P (const unsigned int k, const double p, const double n);
+double gsl_cdf_negative_binomial_Q (const unsigned int k, const double p, const double n);
+
+double gsl_cdf_pascal_P (const unsigned int k, const double p, const unsigned int n);
+double gsl_cdf_pascal_Q (const unsigned int k, const double p, const unsigned int n);
+
+double gsl_cdf_hypergeometric_P (const unsigned int k, const unsigned int n1,
+ const unsigned int n2, const unsigned int t);
+double gsl_cdf_hypergeometric_Q (const unsigned int k, const unsigned int n1,
+ const unsigned int n2, const unsigned int t);
+
+__END_DECLS
+
+#endif /* __GSL_CDF_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_chebyshev.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_chebyshev.h
new file mode 100644
index 00000000..858048e4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_chebyshev.h
@@ -0,0 +1,133 @@
+/* cheb/gsl_chebyshev.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CHEBYSHEV_H__
+#define __GSL_CHEBYSHEV_H__
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_mode.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* data for a Chebyshev series over a given interval */
+
+struct gsl_cheb_series_struct {
+
+ double * c; /* coefficients */
+ size_t order; /* order of expansion */
+ double a; /* lower interval point */
+ double b; /* upper interval point */
+
+ /* The following exists (mostly) for the benefit
+ * of the implementation. It is an effective single
+ * precision order, for use in single precision
+ * evaluation. Users can use it if they like, but
+ * only they know how to calculate it, since it is
+ * specific to the approximated function. By default,
+ * order_sp = order.
+ * It is used explicitly only by the gsl_cheb_eval_mode
+ * functions, which are not meant for casual use.
+ */
+ size_t order_sp;
+
+ /* Additional elements not used by specfunc */
+
+ double * f; /* function evaluated at chebyschev points */
+};
+typedef struct gsl_cheb_series_struct gsl_cheb_series;
+
+
+/* Calculate a Chebyshev series of specified order over
+ * a specified interval, for a given function.
+ * Return 0 on failure.
+ */
+gsl_cheb_series * gsl_cheb_alloc(const size_t order);
+
+/* Free a Chebyshev series previously calculated with gsl_cheb_alloc().
+ */
+void gsl_cheb_free(gsl_cheb_series * cs);
+
+/* Calculate a Chebyshev series using the storage provided.
+ * Uses the interval (a,b) and the order with which it
+ * was initially created.
+ *
+ */
+int gsl_cheb_init(gsl_cheb_series * cs, const gsl_function * func,
+ const double a, const double b);
+
+/* Return the order, size of coefficient array and coefficient array ptr */
+size_t gsl_cheb_order (const gsl_cheb_series * cs);
+size_t gsl_cheb_size (const gsl_cheb_series * cs);
+double *gsl_cheb_coeffs (const gsl_cheb_series * cs);
+
+/* Evaluate a Chebyshev series at a given point.
+ * No errors can occur for a struct obtained from gsl_cheb_new().
+ */
+double gsl_cheb_eval(const gsl_cheb_series * cs, const double x);
+int gsl_cheb_eval_err(const gsl_cheb_series * cs, const double x,
+ double * result, double * abserr);
+
+
+/* Evaluate a Chebyshev series at a given point, to (at most) the given order.
+ * No errors can occur for a struct obtained from gsl_cheb_new().
+ */
+double gsl_cheb_eval_n(const gsl_cheb_series * cs, const size_t order,
+ const double x);
+int gsl_cheb_eval_n_err(const gsl_cheb_series * cs, const size_t order,
+ const double x, double * result, double * abserr);
+
+
+/* Evaluate a Chebyshev series at a given point, using the default
+ * order for double precision mode(s) and the single precision
+ * order for other modes.
+ * No errors can occur for a struct obtained from gsl_cheb_new().
+ */
+double gsl_cheb_eval_mode(const gsl_cheb_series * cs, const double x, gsl_mode_t mode);
+int gsl_cheb_eval_mode_e(const gsl_cheb_series * cs, const double x, gsl_mode_t mode, double * result, double * abserr);
+
+
+
+/* Compute the derivative of a Chebyshev series.
+ */
+int gsl_cheb_calc_deriv(gsl_cheb_series * deriv, const gsl_cheb_series * cs);
+
+/* Compute the integral of a Chebyshev series. The
+ * integral is fixed by the condition that it equals zero at
+ * the left end-point, ie it is precisely
+ * Integrate[cs(t; a,b), {t, a, x}]
+ */
+int gsl_cheb_calc_integ(gsl_cheb_series * integ, const gsl_cheb_series * cs);
+
+
+
+
+__END_DECLS
+
+#endif /* __GSL_CHEBYSHEV_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_check_range.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_check_range.h
new file mode 100644
index 00000000..d110b6b8
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_check_range.h
@@ -0,0 +1,57 @@
+/* vector/gsl_check_range.h
+ *
+ * Copyright (C) 2003, 2004, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CHECK_RANGE_H__
+#define __GSL_CHECK_RANGE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+GSL_VAR int gsl_check_range;
+
+/* Turn range checking on by default, unless the user defines
+ GSL_RANGE_CHECK_OFF, or defines GSL_RANGE_CHECK to 0 explicitly */
+
+#ifdef GSL_RANGE_CHECK_OFF
+# ifndef GSL_RANGE_CHECK
+# define GSL_RANGE_CHECK 0
+# else
+# error "cannot set both GSL_RANGE_CHECK and GSL_RANGE_CHECK_OFF"
+# endif
+#else
+# ifndef GSL_RANGE_CHECK
+# define GSL_RANGE_CHECK 1
+# endif
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_CHECK_RANGE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_combination.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_combination.h
new file mode 100644
index 00000000..69de7cf1
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_combination.h
@@ -0,0 +1,92 @@
+/* combination/gsl_combination.h
+ * based on permutation/gsl_permutation.h by Brian Gough
+ *
+ * Copyright (C) 2001 Szymon Jaroszewicz
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_COMBINATION_H__
+#define __GSL_COMBINATION_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_combination_struct
+{
+ size_t n;
+ size_t k;
+ size_t *data;
+};
+
+typedef struct gsl_combination_struct gsl_combination;
+
+gsl_combination *gsl_combination_alloc (const size_t n, const size_t k);
+gsl_combination *gsl_combination_calloc (const size_t n, const size_t k);
+void gsl_combination_init_first (gsl_combination * c);
+void gsl_combination_init_last (gsl_combination * c);
+void gsl_combination_free (gsl_combination * c);
+int gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src);
+
+int gsl_combination_fread (FILE * stream, gsl_combination * c);
+int gsl_combination_fwrite (FILE * stream, const gsl_combination * c);
+int gsl_combination_fscanf (FILE * stream, gsl_combination * c);
+int gsl_combination_fprintf (FILE * stream, const gsl_combination * c, const char *format);
+
+size_t gsl_combination_n (const gsl_combination * c);
+size_t gsl_combination_k (const gsl_combination * c);
+size_t * gsl_combination_data (const gsl_combination * c);
+
+int gsl_combination_valid (gsl_combination * c);
+int gsl_combination_next (gsl_combination * c);
+int gsl_combination_prev (gsl_combination * c);
+
+INLINE_DECL size_t gsl_combination_get (const gsl_combination * c, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+size_t
+gsl_combination_get (const gsl_combination * c, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return c->data[i];
+}
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_COMBINATION_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_complex.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_complex.h
new file mode 100644
index 00000000..e77b7706
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_complex.h
@@ -0,0 +1,103 @@
+/* complex/gsl_complex.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_COMPLEX_H__
+#define __GSL_COMPLEX_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* two consecutive built-in types as a complex number */
+typedef double * gsl_complex_packed ;
+typedef float * gsl_complex_packed_float ;
+typedef long double * gsl_complex_packed_long_double ;
+
+typedef const double * gsl_const_complex_packed ;
+typedef const float * gsl_const_complex_packed_float ;
+typedef const long double * gsl_const_complex_packed_long_double ;
+
+
+/* 2N consecutive built-in types as N complex numbers */
+typedef double * gsl_complex_packed_array ;
+typedef float * gsl_complex_packed_array_float ;
+typedef long double * gsl_complex_packed_array_long_double ;
+
+typedef const double * gsl_const_complex_packed_array ;
+typedef const float * gsl_const_complex_packed_array_float ;
+typedef const long double * gsl_const_complex_packed_array_long_double ;
+
+
+/* Yes... this seems weird. Trust us. The point is just that
+ sometimes you want to make it obvious that something is
+ an output value. The fact that it lacks a 'const' may not
+ be enough of a clue for people in some contexts.
+ */
+typedef double * gsl_complex_packed_ptr ;
+typedef float * gsl_complex_packed_float_ptr ;
+typedef long double * gsl_complex_packed_long_double_ptr ;
+
+typedef const double * gsl_const_complex_packed_ptr ;
+typedef const float * gsl_const_complex_packed_float_ptr ;
+typedef const long double * gsl_const_complex_packed_long_double_ptr ;
+
+
+typedef struct
+ {
+ long double dat[2];
+ }
+gsl_complex_long_double;
+
+typedef struct
+ {
+ double dat[2];
+ }
+gsl_complex;
+
+typedef struct
+ {
+ float dat[2];
+ }
+gsl_complex_float;
+
+#define GSL_REAL(z) ((z).dat[0])
+#define GSL_IMAG(z) ((z).dat[1])
+#define GSL_COMPLEX_P(zp) ((zp)->dat)
+#define GSL_COMPLEX_P_REAL(zp) ((zp)->dat[0])
+#define GSL_COMPLEX_P_IMAG(zp) ((zp)->dat[1])
+#define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1]))
+
+#define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
+#define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
+#define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
+
+#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0)
+
+__END_DECLS
+
+#endif /* __GSL_COMPLEX_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_complex_math.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_complex_math.h
new file mode 100644
index 00000000..ad8d076a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_complex_math.h
@@ -0,0 +1,142 @@
+/* complex/gsl_complex_math.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Jorma Olavi Tähtinen, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_COMPLEX_MATH_H__
+#define __GSL_COMPLEX_MATH_H__
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_complex.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+#else
+#define __BEGIN_DECLS /* empty */
+#define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Complex numbers */
+
+gsl_complex gsl_complex_polar (double r, double theta); /* r= r e^(i theta) */
+
+INLINE_DECL gsl_complex gsl_complex_rect (double x, double y); /* r= real+i*imag */
+
+#ifdef HAVE_INLINE
+INLINE_FUN gsl_complex
+gsl_complex_rect (double x, double y)
+{ /* return z = x + i y */
+ gsl_complex z;
+ GSL_SET_COMPLEX (&z, x, y);
+ return z;
+}
+#endif
+
+#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))
+#define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0))
+#define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0))
+
+/* Properties of complex numbers */
+
+double gsl_complex_arg (gsl_complex z); /* return arg(z), -pi< arg(z) <=+pi */
+double gsl_complex_abs (gsl_complex z); /* return |z| */
+double gsl_complex_abs2 (gsl_complex z); /* return |z|^2 */
+double gsl_complex_logabs (gsl_complex z); /* return log|z| */
+
+/* Complex arithmetic operators */
+
+gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b); /* r=a+b */
+gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b); /* r=a-b */
+gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b); /* r=a*b */
+gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b); /* r=a/b */
+
+gsl_complex gsl_complex_add_real (gsl_complex a, double x); /* r=a+x */
+gsl_complex gsl_complex_sub_real (gsl_complex a, double x); /* r=a-x */
+gsl_complex gsl_complex_mul_real (gsl_complex a, double x); /* r=a*x */
+gsl_complex gsl_complex_div_real (gsl_complex a, double x); /* r=a/x */
+
+gsl_complex gsl_complex_add_imag (gsl_complex a, double y); /* r=a+iy */
+gsl_complex gsl_complex_sub_imag (gsl_complex a, double y); /* r=a-iy */
+gsl_complex gsl_complex_mul_imag (gsl_complex a, double y); /* r=a*iy */
+gsl_complex gsl_complex_div_imag (gsl_complex a, double y); /* r=a/iy */
+
+gsl_complex gsl_complex_conjugate (gsl_complex z); /* r=conj(z) */
+gsl_complex gsl_complex_inverse (gsl_complex a); /* r=1/a */
+gsl_complex gsl_complex_negative (gsl_complex a); /* r=-a */
+
+/* Elementary Complex Functions */
+
+gsl_complex gsl_complex_sqrt (gsl_complex z); /* r=sqrt(z) */
+gsl_complex gsl_complex_sqrt_real (double x); /* r=sqrt(x) (x<0 ok) */
+
+gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b); /* r=a^b */
+gsl_complex gsl_complex_pow_real (gsl_complex a, double b); /* r=a^b */
+
+gsl_complex gsl_complex_exp (gsl_complex a); /* r=exp(a) */
+gsl_complex gsl_complex_log (gsl_complex a); /* r=log(a) (base e) */
+gsl_complex gsl_complex_log10 (gsl_complex a); /* r=log10(a) (base 10) */
+gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b); /* r=log_b(a) (base=b) */
+
+/* Complex Trigonometric Functions */
+
+gsl_complex gsl_complex_sin (gsl_complex a); /* r=sin(a) */
+gsl_complex gsl_complex_cos (gsl_complex a); /* r=cos(a) */
+gsl_complex gsl_complex_sec (gsl_complex a); /* r=sec(a) */
+gsl_complex gsl_complex_csc (gsl_complex a); /* r=csc(a) */
+gsl_complex gsl_complex_tan (gsl_complex a); /* r=tan(a) */
+gsl_complex gsl_complex_cot (gsl_complex a); /* r=cot(a) */
+
+/* Inverse Complex Trigonometric Functions */
+
+gsl_complex gsl_complex_arcsin (gsl_complex a); /* r=arcsin(a) */
+gsl_complex gsl_complex_arcsin_real (double a); /* r=arcsin(a) */
+gsl_complex gsl_complex_arccos (gsl_complex a); /* r=arccos(a) */
+gsl_complex gsl_complex_arccos_real (double a); /* r=arccos(a) */
+gsl_complex gsl_complex_arcsec (gsl_complex a); /* r=arcsec(a) */
+gsl_complex gsl_complex_arcsec_real (double a); /* r=arcsec(a) */
+gsl_complex gsl_complex_arccsc (gsl_complex a); /* r=arccsc(a) */
+gsl_complex gsl_complex_arccsc_real (double a); /* r=arccsc(a) */
+gsl_complex gsl_complex_arctan (gsl_complex a); /* r=arctan(a) */
+gsl_complex gsl_complex_arccot (gsl_complex a); /* r=arccot(a) */
+
+/* Complex Hyperbolic Functions */
+
+gsl_complex gsl_complex_sinh (gsl_complex a); /* r=sinh(a) */
+gsl_complex gsl_complex_cosh (gsl_complex a); /* r=coshh(a) */
+gsl_complex gsl_complex_sech (gsl_complex a); /* r=sech(a) */
+gsl_complex gsl_complex_csch (gsl_complex a); /* r=csch(a) */
+gsl_complex gsl_complex_tanh (gsl_complex a); /* r=tanh(a) */
+gsl_complex gsl_complex_coth (gsl_complex a); /* r=coth(a) */
+
+/* Inverse Complex Hyperbolic Functions */
+
+gsl_complex gsl_complex_arcsinh (gsl_complex a); /* r=arcsinh(a) */
+gsl_complex gsl_complex_arccosh (gsl_complex a); /* r=arccosh(a) */
+gsl_complex gsl_complex_arccosh_real (double a); /* r=arccosh(a) */
+gsl_complex gsl_complex_arcsech (gsl_complex a); /* r=arcsech(a) */
+gsl_complex gsl_complex_arccsch (gsl_complex a); /* r=arccsch(a) */
+gsl_complex gsl_complex_arctanh (gsl_complex a); /* r=arctanh(a) */
+gsl_complex gsl_complex_arctanh_real (double a); /* r=arctanh(a) */
+gsl_complex gsl_complex_arccoth (gsl_complex a); /* r=arccoth(a) */
+
+__END_DECLS
+
+#endif /* __GSL_COMPLEX_MATH_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_const.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const.h
new file mode 100644
index 00000000..5d749dc5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const.h
@@ -0,0 +1,31 @@
+/* const/gsl_const.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CONST__
+#define __GSL_CONST__
+
+#include <gsl/gsl_const_num.h>
+
+#include <gsl/gsl_const_cgs.h>
+#include <gsl/gsl_const_mks.h>
+
+#include <gsl/gsl_const_cgsm.h>
+#include <gsl/gsl_const_mksa.h>
+
+#endif /* __GSL_CONST__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgs.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgs.h
new file mode 100644
index 00000000..ab95b7b0
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgs.h
@@ -0,0 +1,116 @@
+/* const/gsl_const_cgs.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007, 2008, 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CONST_CGS__
+#define __GSL_CONST_CGS__
+
+#define GSL_CONST_CGS_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */
+#define GSL_CONST_CGS_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
+#define GSL_CONST_CGS_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */
+#define GSL_CONST_CGS_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */
+#define GSL_CONST_CGS_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */
+#define GSL_CONST_CGS_LIGHT_YEAR (9.46053620707e17) /* cm */
+#define GSL_CONST_CGS_PARSEC (3.08567758135e18) /* cm */
+#define GSL_CONST_CGS_GRAV_ACCEL (9.80665e2) /* cm / s^2 */
+#define GSL_CONST_CGS_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */
+#define GSL_CONST_CGS_MASS_ELECTRON (9.10938188e-28) /* g */
+#define GSL_CONST_CGS_MASS_MUON (1.88353109e-25) /* g */
+#define GSL_CONST_CGS_MASS_PROTON (1.67262158e-24) /* g */
+#define GSL_CONST_CGS_MASS_NEUTRON (1.67492716e-24) /* g */
+#define GSL_CONST_CGS_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */
+#define GSL_CONST_CGS_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */
+#define GSL_CONST_CGS_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */
+#define GSL_CONST_CGS_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */
+#define GSL_CONST_CGS_MINUTE (6e1) /* s */
+#define GSL_CONST_CGS_HOUR (3.6e3) /* s */
+#define GSL_CONST_CGS_DAY (8.64e4) /* s */
+#define GSL_CONST_CGS_WEEK (6.048e5) /* s */
+#define GSL_CONST_CGS_INCH (2.54e0) /* cm */
+#define GSL_CONST_CGS_FOOT (3.048e1) /* cm */
+#define GSL_CONST_CGS_YARD (9.144e1) /* cm */
+#define GSL_CONST_CGS_MILE (1.609344e5) /* cm */
+#define GSL_CONST_CGS_NAUTICAL_MILE (1.852e5) /* cm */
+#define GSL_CONST_CGS_FATHOM (1.8288e2) /* cm */
+#define GSL_CONST_CGS_MIL (2.54e-3) /* cm */
+#define GSL_CONST_CGS_POINT (3.52777777778e-2) /* cm */
+#define GSL_CONST_CGS_TEXPOINT (3.51459803515e-2) /* cm */
+#define GSL_CONST_CGS_MICRON (1e-4) /* cm */
+#define GSL_CONST_CGS_ANGSTROM (1e-8) /* cm */
+#define GSL_CONST_CGS_HECTARE (1e8) /* cm^2 */
+#define GSL_CONST_CGS_ACRE (4.04685642241e7) /* cm^2 */
+#define GSL_CONST_CGS_BARN (1e-24) /* cm^2 */
+#define GSL_CONST_CGS_LITER (1e3) /* cm^3 */
+#define GSL_CONST_CGS_US_GALLON (3.78541178402e3) /* cm^3 */
+#define GSL_CONST_CGS_QUART (9.46352946004e2) /* cm^3 */
+#define GSL_CONST_CGS_PINT (4.73176473002e2) /* cm^3 */
+#define GSL_CONST_CGS_CUP (2.36588236501e2) /* cm^3 */
+#define GSL_CONST_CGS_FLUID_OUNCE (2.95735295626e1) /* cm^3 */
+#define GSL_CONST_CGS_TABLESPOON (1.47867647813e1) /* cm^3 */
+#define GSL_CONST_CGS_TEASPOON (4.92892159375e0) /* cm^3 */
+#define GSL_CONST_CGS_CANADIAN_GALLON (4.54609e3) /* cm^3 */
+#define GSL_CONST_CGS_UK_GALLON (4.546092e3) /* cm^3 */
+#define GSL_CONST_CGS_MILES_PER_HOUR (4.4704e1) /* cm / s */
+#define GSL_CONST_CGS_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */
+#define GSL_CONST_CGS_KNOT (5.14444444444e1) /* cm / s */
+#define GSL_CONST_CGS_POUND_MASS (4.5359237e2) /* g */
+#define GSL_CONST_CGS_OUNCE_MASS (2.8349523125e1) /* g */
+#define GSL_CONST_CGS_TON (9.0718474e5) /* g */
+#define GSL_CONST_CGS_METRIC_TON (1e6) /* g */
+#define GSL_CONST_CGS_UK_TON (1.0160469088e6) /* g */
+#define GSL_CONST_CGS_TROY_OUNCE (3.1103475e1) /* g */
+#define GSL_CONST_CGS_CARAT (2e-1) /* g */
+#define GSL_CONST_CGS_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */
+#define GSL_CONST_CGS_GRAM_FORCE (9.80665e2) /* cm g / s^2 */
+#define GSL_CONST_CGS_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */
+#define GSL_CONST_CGS_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */
+#define GSL_CONST_CGS_POUNDAL (1.38255e4) /* cm g / s^2 */
+#define GSL_CONST_CGS_CALORIE (4.1868e7) /* g cm^2 / s^2 */
+#define GSL_CONST_CGS_BTU (1.05505585262e10) /* g cm^2 / s^2 */
+#define GSL_CONST_CGS_THERM (1.05506e15) /* g cm^2 / s^2 */
+#define GSL_CONST_CGS_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */
+#define GSL_CONST_CGS_BAR (1e6) /* g / cm s^2 */
+#define GSL_CONST_CGS_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */
+#define GSL_CONST_CGS_TORR (1.33322368421e3) /* g / cm s^2 */
+#define GSL_CONST_CGS_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */
+#define GSL_CONST_CGS_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */
+#define GSL_CONST_CGS_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */
+#define GSL_CONST_CGS_PSI (6.89475729317e4) /* g / cm s^2 */
+#define GSL_CONST_CGS_POISE (1e0) /* g / cm s */
+#define GSL_CONST_CGS_STOKES (1e0) /* cm^2 / s */
+#define GSL_CONST_CGS_STILB (1e0) /* cd / cm^2 */
+#define GSL_CONST_CGS_LUMEN (1e0) /* cd sr */
+#define GSL_CONST_CGS_LUX (1e-4) /* cd sr / cm^2 */
+#define GSL_CONST_CGS_PHOT (1e0) /* cd sr / cm^2 */
+#define GSL_CONST_CGS_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */
+#define GSL_CONST_CGS_LAMBERT (1e0) /* cd sr / cm^2 */
+#define GSL_CONST_CGS_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */
+#define GSL_CONST_CGS_CURIE (3.7e10) /* 1 / s */
+#define GSL_CONST_CGS_ROENTGEN (2.58e-7) /* A s / g */
+#define GSL_CONST_CGS_RAD (1e2) /* cm^2 / s^2 */
+#define GSL_CONST_CGS_SOLAR_MASS (1.98892e33) /* g */
+#define GSL_CONST_CGS_BOHR_RADIUS (5.291772083e-9) /* cm */
+#define GSL_CONST_CGS_NEWTON (1e5) /* cm g / s^2 */
+#define GSL_CONST_CGS_DYNE (1e0) /* cm g / s^2 */
+#define GSL_CONST_CGS_JOULE (1e7) /* g cm^2 / s^2 */
+#define GSL_CONST_CGS_ERG (1e0) /* g cm^2 / s^2 */
+#define GSL_CONST_CGS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */
+#define GSL_CONST_CGS_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */
+
+#endif /* __GSL_CONST_CGS__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgsm.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgsm.h
new file mode 100644
index 00000000..2047e5ed
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_cgsm.h
@@ -0,0 +1,122 @@
+/* const/gsl_const_cgsm.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007, 2008, 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CONST_CGSM__
+#define __GSL_CONST_CGSM__
+
+#define GSL_CONST_CGSM_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */
+#define GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */
+#define GSL_CONST_CGSM_PLANCKS_CONSTANT_H (6.62606896e-27) /* g cm^2 / s */
+#define GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR (1.05457162825e-27) /* g cm^2 / s */
+#define GSL_CONST_CGSM_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */
+#define GSL_CONST_CGSM_LIGHT_YEAR (9.46053620707e17) /* cm */
+#define GSL_CONST_CGSM_PARSEC (3.08567758135e18) /* cm */
+#define GSL_CONST_CGSM_GRAV_ACCEL (9.80665e2) /* cm / s^2 */
+#define GSL_CONST_CGSM_ELECTRON_VOLT (1.602176487e-12) /* g cm^2 / s^2 */
+#define GSL_CONST_CGSM_MASS_ELECTRON (9.10938188e-28) /* g */
+#define GSL_CONST_CGSM_MASS_MUON (1.88353109e-25) /* g */
+#define GSL_CONST_CGSM_MASS_PROTON (1.67262158e-24) /* g */
+#define GSL_CONST_CGSM_MASS_NEUTRON (1.67492716e-24) /* g */
+#define GSL_CONST_CGSM_RYDBERG (2.17987196968e-11) /* g cm^2 / s^2 */
+#define GSL_CONST_CGSM_BOLTZMANN (1.3806504e-16) /* g cm^2 / K s^2 */
+#define GSL_CONST_CGSM_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */
+#define GSL_CONST_CGSM_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */
+#define GSL_CONST_CGSM_MINUTE (6e1) /* s */
+#define GSL_CONST_CGSM_HOUR (3.6e3) /* s */
+#define GSL_CONST_CGSM_DAY (8.64e4) /* s */
+#define GSL_CONST_CGSM_WEEK (6.048e5) /* s */
+#define GSL_CONST_CGSM_INCH (2.54e0) /* cm */
+#define GSL_CONST_CGSM_FOOT (3.048e1) /* cm */
+#define GSL_CONST_CGSM_YARD (9.144e1) /* cm */
+#define GSL_CONST_CGSM_MILE (1.609344e5) /* cm */
+#define GSL_CONST_CGSM_NAUTICAL_MILE (1.852e5) /* cm */
+#define GSL_CONST_CGSM_FATHOM (1.8288e2) /* cm */
+#define GSL_CONST_CGSM_MIL (2.54e-3) /* cm */
+#define GSL_CONST_CGSM_POINT (3.52777777778e-2) /* cm */
+#define GSL_CONST_CGSM_TEXPOINT (3.51459803515e-2) /* cm */
+#define GSL_CONST_CGSM_MICRON (1e-4) /* cm */
+#define GSL_CONST_CGSM_ANGSTROM (1e-8) /* cm */
+#define GSL_CONST_CGSM_HECTARE (1e8) /* cm^2 */
+#define GSL_CONST_CGSM_ACRE (4.04685642241e7) /* cm^2 */
+#define GSL_CONST_CGSM_BARN (1e-24) /* cm^2 */
+#define GSL_CONST_CGSM_LITER (1e3) /* cm^3 */
+#define GSL_CONST_CGSM_US_GALLON (3.78541178402e3) /* cm^3 */
+#define GSL_CONST_CGSM_QUART (9.46352946004e2) /* cm^3 */
+#define GSL_CONST_CGSM_PINT (4.73176473002e2) /* cm^3 */
+#define GSL_CONST_CGSM_CUP (2.36588236501e2) /* cm^3 */
+#define GSL_CONST_CGSM_FLUID_OUNCE (2.95735295626e1) /* cm^3 */
+#define GSL_CONST_CGSM_TABLESPOON (1.47867647813e1) /* cm^3 */
+#define GSL_CONST_CGSM_TEASPOON (4.92892159375e0) /* cm^3 */
+#define GSL_CONST_CGSM_CANADIAN_GALLON (4.54609e3) /* cm^3 */
+#define GSL_CONST_CGSM_UK_GALLON (4.546092e3) /* cm^3 */
+#define GSL_CONST_CGSM_MILES_PER_HOUR (4.4704e1) /* cm / s */
+#define GSL_CONST_CGSM_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */
+#define GSL_CONST_CGSM_KNOT (5.14444444444e1) /* cm / s */
+#define GSL_CONST_CGSM_POUND_MASS (4.5359237e2) /* g */
+#define GSL_CONST_CGSM_OUNCE_MASS (2.8349523125e1) /* g */
+#define GSL_CONST_CGSM_TON (9.0718474e5) /* g */
+#define GSL_CONST_CGSM_METRIC_TON (1e6) /* g */
+#define GSL_CONST_CGSM_UK_TON (1.0160469088e6) /* g */
+#define GSL_CONST_CGSM_TROY_OUNCE (3.1103475e1) /* g */
+#define GSL_CONST_CGSM_CARAT (2e-1) /* g */
+#define GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS (1.660538782e-24) /* g */
+#define GSL_CONST_CGSM_GRAM_FORCE (9.80665e2) /* cm g / s^2 */
+#define GSL_CONST_CGSM_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */
+#define GSL_CONST_CGSM_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */
+#define GSL_CONST_CGSM_POUNDAL (1.38255e4) /* cm g / s^2 */
+#define GSL_CONST_CGSM_CALORIE (4.1868e7) /* g cm^2 / s^2 */
+#define GSL_CONST_CGSM_BTU (1.05505585262e10) /* g cm^2 / s^2 */
+#define GSL_CONST_CGSM_THERM (1.05506e15) /* g cm^2 / s^2 */
+#define GSL_CONST_CGSM_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */
+#define GSL_CONST_CGSM_BAR (1e6) /* g / cm s^2 */
+#define GSL_CONST_CGSM_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */
+#define GSL_CONST_CGSM_TORR (1.33322368421e3) /* g / cm s^2 */
+#define GSL_CONST_CGSM_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */
+#define GSL_CONST_CGSM_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */
+#define GSL_CONST_CGSM_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */
+#define GSL_CONST_CGSM_PSI (6.89475729317e4) /* g / cm s^2 */
+#define GSL_CONST_CGSM_POISE (1e0) /* g / cm s */
+#define GSL_CONST_CGSM_STOKES (1e0) /* cm^2 / s */
+#define GSL_CONST_CGSM_STILB (1e0) /* cd / cm^2 */
+#define GSL_CONST_CGSM_LUMEN (1e0) /* cd sr */
+#define GSL_CONST_CGSM_LUX (1e-4) /* cd sr / cm^2 */
+#define GSL_CONST_CGSM_PHOT (1e0) /* cd sr / cm^2 */
+#define GSL_CONST_CGSM_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */
+#define GSL_CONST_CGSM_LAMBERT (1e0) /* cd sr / cm^2 */
+#define GSL_CONST_CGSM_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */
+#define GSL_CONST_CGSM_CURIE (3.7e10) /* 1 / s */
+#define GSL_CONST_CGSM_ROENTGEN (2.58e-8) /* abamp s / g */
+#define GSL_CONST_CGSM_RAD (1e2) /* cm^2 / s^2 */
+#define GSL_CONST_CGSM_SOLAR_MASS (1.98892e33) /* g */
+#define GSL_CONST_CGSM_BOHR_RADIUS (5.291772083e-9) /* cm */
+#define GSL_CONST_CGSM_NEWTON (1e5) /* cm g / s^2 */
+#define GSL_CONST_CGSM_DYNE (1e0) /* cm g / s^2 */
+#define GSL_CONST_CGSM_JOULE (1e7) /* g cm^2 / s^2 */
+#define GSL_CONST_CGSM_ERG (1e0) /* g cm^2 / s^2 */
+#define GSL_CONST_CGSM_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-5) /* g / K^4 s^3 */
+#define GSL_CONST_CGSM_THOMSON_CROSS_SECTION (6.65245893699e-25) /* cm^2 */
+#define GSL_CONST_CGSM_BOHR_MAGNETON (9.27400899e-21) /* abamp cm^2 */
+#define GSL_CONST_CGSM_NUCLEAR_MAGNETON (5.05078317e-24) /* abamp cm^2 */
+#define GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT (9.28476362e-21) /* abamp cm^2 */
+#define GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT (1.410606633e-23) /* abamp cm^2 */
+#define GSL_CONST_CGSM_FARADAY (9.64853429775e3) /* abamp s / mol */
+#define GSL_CONST_CGSM_ELECTRON_CHARGE (1.602176487e-20) /* abamp s */
+
+#endif /* __GSL_CONST_CGSM__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mks.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mks.h
new file mode 100644
index 00000000..bc60e2ac
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mks.h
@@ -0,0 +1,126 @@
+/* const/gsl_const_mks.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007, 2008, 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CONST_MKS__
+#define __GSL_CONST_MKS__
+
+#define GSL_CONST_MKS_SPEED_OF_LIGHT (2.99792458e8) /* m / s */
+#define GSL_CONST_MKS_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
+#define GSL_CONST_MKS_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */
+#define GSL_CONST_MKS_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */
+#define GSL_CONST_MKS_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */
+#define GSL_CONST_MKS_LIGHT_YEAR (9.46053620707e15) /* m */
+#define GSL_CONST_MKS_PARSEC (3.08567758135e16) /* m */
+#define GSL_CONST_MKS_GRAV_ACCEL (9.80665e0) /* m / s^2 */
+#define GSL_CONST_MKS_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */
+#define GSL_CONST_MKS_MASS_ELECTRON (9.10938188e-31) /* kg */
+#define GSL_CONST_MKS_MASS_MUON (1.88353109e-28) /* kg */
+#define GSL_CONST_MKS_MASS_PROTON (1.67262158e-27) /* kg */
+#define GSL_CONST_MKS_MASS_NEUTRON (1.67492716e-27) /* kg */
+#define GSL_CONST_MKS_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */
+#define GSL_CONST_MKS_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */
+#define GSL_CONST_MKS_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */
+#define GSL_CONST_MKS_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */
+#define GSL_CONST_MKS_MINUTE (6e1) /* s */
+#define GSL_CONST_MKS_HOUR (3.6e3) /* s */
+#define GSL_CONST_MKS_DAY (8.64e4) /* s */
+#define GSL_CONST_MKS_WEEK (6.048e5) /* s */
+#define GSL_CONST_MKS_INCH (2.54e-2) /* m */
+#define GSL_CONST_MKS_FOOT (3.048e-1) /* m */
+#define GSL_CONST_MKS_YARD (9.144e-1) /* m */
+#define GSL_CONST_MKS_MILE (1.609344e3) /* m */
+#define GSL_CONST_MKS_NAUTICAL_MILE (1.852e3) /* m */
+#define GSL_CONST_MKS_FATHOM (1.8288e0) /* m */
+#define GSL_CONST_MKS_MIL (2.54e-5) /* m */
+#define GSL_CONST_MKS_POINT (3.52777777778e-4) /* m */
+#define GSL_CONST_MKS_TEXPOINT (3.51459803515e-4) /* m */
+#define GSL_CONST_MKS_MICRON (1e-6) /* m */
+#define GSL_CONST_MKS_ANGSTROM (1e-10) /* m */
+#define GSL_CONST_MKS_HECTARE (1e4) /* m^2 */
+#define GSL_CONST_MKS_ACRE (4.04685642241e3) /* m^2 */
+#define GSL_CONST_MKS_BARN (1e-28) /* m^2 */
+#define GSL_CONST_MKS_LITER (1e-3) /* m^3 */
+#define GSL_CONST_MKS_US_GALLON (3.78541178402e-3) /* m^3 */
+#define GSL_CONST_MKS_QUART (9.46352946004e-4) /* m^3 */
+#define GSL_CONST_MKS_PINT (4.73176473002e-4) /* m^3 */
+#define GSL_CONST_MKS_CUP (2.36588236501e-4) /* m^3 */
+#define GSL_CONST_MKS_FLUID_OUNCE (2.95735295626e-5) /* m^3 */
+#define GSL_CONST_MKS_TABLESPOON (1.47867647813e-5) /* m^3 */
+#define GSL_CONST_MKS_TEASPOON (4.92892159375e-6) /* m^3 */
+#define GSL_CONST_MKS_CANADIAN_GALLON (4.54609e-3) /* m^3 */
+#define GSL_CONST_MKS_UK_GALLON (4.546092e-3) /* m^3 */
+#define GSL_CONST_MKS_MILES_PER_HOUR (4.4704e-1) /* m / s */
+#define GSL_CONST_MKS_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */
+#define GSL_CONST_MKS_KNOT (5.14444444444e-1) /* m / s */
+#define GSL_CONST_MKS_POUND_MASS (4.5359237e-1) /* kg */
+#define GSL_CONST_MKS_OUNCE_MASS (2.8349523125e-2) /* kg */
+#define GSL_CONST_MKS_TON (9.0718474e2) /* kg */
+#define GSL_CONST_MKS_METRIC_TON (1e3) /* kg */
+#define GSL_CONST_MKS_UK_TON (1.0160469088e3) /* kg */
+#define GSL_CONST_MKS_TROY_OUNCE (3.1103475e-2) /* kg */
+#define GSL_CONST_MKS_CARAT (2e-4) /* kg */
+#define GSL_CONST_MKS_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */
+#define GSL_CONST_MKS_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */
+#define GSL_CONST_MKS_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */
+#define GSL_CONST_MKS_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */
+#define GSL_CONST_MKS_POUNDAL (1.38255e-1) /* kg m / s^2 */
+#define GSL_CONST_MKS_CALORIE (4.1868e0) /* kg m^2 / s^2 */
+#define GSL_CONST_MKS_BTU (1.05505585262e3) /* kg m^2 / s^2 */
+#define GSL_CONST_MKS_THERM (1.05506e8) /* kg m^2 / s^2 */
+#define GSL_CONST_MKS_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */
+#define GSL_CONST_MKS_BAR (1e5) /* kg / m s^2 */
+#define GSL_CONST_MKS_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */
+#define GSL_CONST_MKS_TORR (1.33322368421e2) /* kg / m s^2 */
+#define GSL_CONST_MKS_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */
+#define GSL_CONST_MKS_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */
+#define GSL_CONST_MKS_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */
+#define GSL_CONST_MKS_PSI (6.89475729317e3) /* kg / m s^2 */
+#define GSL_CONST_MKS_POISE (1e-1) /* kg m^-1 s^-1 */
+#define GSL_CONST_MKS_STOKES (1e-4) /* m^2 / s */
+#define GSL_CONST_MKS_STILB (1e4) /* cd / m^2 */
+#define GSL_CONST_MKS_LUMEN (1e0) /* cd sr */
+#define GSL_CONST_MKS_LUX (1e0) /* cd sr / m^2 */
+#define GSL_CONST_MKS_PHOT (1e4) /* cd sr / m^2 */
+#define GSL_CONST_MKS_FOOTCANDLE (1.076e1) /* cd sr / m^2 */
+#define GSL_CONST_MKS_LAMBERT (1e4) /* cd sr / m^2 */
+#define GSL_CONST_MKS_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */
+#define GSL_CONST_MKS_CURIE (3.7e10) /* 1 / s */
+#define GSL_CONST_MKS_ROENTGEN (2.58e-4) /* A s / kg */
+#define GSL_CONST_MKS_RAD (1e-2) /* m^2 / s^2 */
+#define GSL_CONST_MKS_SOLAR_MASS (1.98892e30) /* kg */
+#define GSL_CONST_MKS_BOHR_RADIUS (5.291772083e-11) /* m */
+#define GSL_CONST_MKS_NEWTON (1e0) /* kg m / s^2 */
+#define GSL_CONST_MKS_DYNE (1e-5) /* kg m / s^2 */
+#define GSL_CONST_MKS_JOULE (1e0) /* kg m^2 / s^2 */
+#define GSL_CONST_MKS_ERG (1e-7) /* kg m^2 / s^2 */
+#define GSL_CONST_MKS_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */
+#define GSL_CONST_MKS_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */
+#define GSL_CONST_MKS_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */
+#define GSL_CONST_MKS_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */
+#define GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */
+#define GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */
+#define GSL_CONST_MKS_FARADAY (9.64853429775e4) /* A s / mol */
+#define GSL_CONST_MKS_ELECTRON_CHARGE (1.602176487e-19) /* A s */
+#define GSL_CONST_MKS_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */
+#define GSL_CONST_MKS_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */
+#define GSL_CONST_MKS_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */
+#define GSL_CONST_MKS_GAUSS (1e-4) /* kg / A s^2 */
+
+#endif /* __GSL_CONST_MKS__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mksa.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mksa.h
new file mode 100644
index 00000000..5d91d1ca
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_mksa.h
@@ -0,0 +1,126 @@
+/* const/gsl_const_mksa.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007, 2008, 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CONST_MKSA__
+#define __GSL_CONST_MKSA__
+
+#define GSL_CONST_MKSA_SPEED_OF_LIGHT (2.99792458e8) /* m / s */
+#define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */
+#define GSL_CONST_MKSA_PLANCKS_CONSTANT_H (6.62606896e-34) /* kg m^2 / s */
+#define GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR (1.05457162825e-34) /* kg m^2 / s */
+#define GSL_CONST_MKSA_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */
+#define GSL_CONST_MKSA_LIGHT_YEAR (9.46053620707e15) /* m */
+#define GSL_CONST_MKSA_PARSEC (3.08567758135e16) /* m */
+#define GSL_CONST_MKSA_GRAV_ACCEL (9.80665e0) /* m / s^2 */
+#define GSL_CONST_MKSA_ELECTRON_VOLT (1.602176487e-19) /* kg m^2 / s^2 */
+#define GSL_CONST_MKSA_MASS_ELECTRON (9.10938188e-31) /* kg */
+#define GSL_CONST_MKSA_MASS_MUON (1.88353109e-28) /* kg */
+#define GSL_CONST_MKSA_MASS_PROTON (1.67262158e-27) /* kg */
+#define GSL_CONST_MKSA_MASS_NEUTRON (1.67492716e-27) /* kg */
+#define GSL_CONST_MKSA_RYDBERG (2.17987196968e-18) /* kg m^2 / s^2 */
+#define GSL_CONST_MKSA_BOLTZMANN (1.3806504e-23) /* kg m^2 / K s^2 */
+#define GSL_CONST_MKSA_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */
+#define GSL_CONST_MKSA_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */
+#define GSL_CONST_MKSA_MINUTE (6e1) /* s */
+#define GSL_CONST_MKSA_HOUR (3.6e3) /* s */
+#define GSL_CONST_MKSA_DAY (8.64e4) /* s */
+#define GSL_CONST_MKSA_WEEK (6.048e5) /* s */
+#define GSL_CONST_MKSA_INCH (2.54e-2) /* m */
+#define GSL_CONST_MKSA_FOOT (3.048e-1) /* m */
+#define GSL_CONST_MKSA_YARD (9.144e-1) /* m */
+#define GSL_CONST_MKSA_MILE (1.609344e3) /* m */
+#define GSL_CONST_MKSA_NAUTICAL_MILE (1.852e3) /* m */
+#define GSL_CONST_MKSA_FATHOM (1.8288e0) /* m */
+#define GSL_CONST_MKSA_MIL (2.54e-5) /* m */
+#define GSL_CONST_MKSA_POINT (3.52777777778e-4) /* m */
+#define GSL_CONST_MKSA_TEXPOINT (3.51459803515e-4) /* m */
+#define GSL_CONST_MKSA_MICRON (1e-6) /* m */
+#define GSL_CONST_MKSA_ANGSTROM (1e-10) /* m */
+#define GSL_CONST_MKSA_HECTARE (1e4) /* m^2 */
+#define GSL_CONST_MKSA_ACRE (4.04685642241e3) /* m^2 */
+#define GSL_CONST_MKSA_BARN (1e-28) /* m^2 */
+#define GSL_CONST_MKSA_LITER (1e-3) /* m^3 */
+#define GSL_CONST_MKSA_US_GALLON (3.78541178402e-3) /* m^3 */
+#define GSL_CONST_MKSA_QUART (9.46352946004e-4) /* m^3 */
+#define GSL_CONST_MKSA_PINT (4.73176473002e-4) /* m^3 */
+#define GSL_CONST_MKSA_CUP (2.36588236501e-4) /* m^3 */
+#define GSL_CONST_MKSA_FLUID_OUNCE (2.95735295626e-5) /* m^3 */
+#define GSL_CONST_MKSA_TABLESPOON (1.47867647813e-5) /* m^3 */
+#define GSL_CONST_MKSA_TEASPOON (4.92892159375e-6) /* m^3 */
+#define GSL_CONST_MKSA_CANADIAN_GALLON (4.54609e-3) /* m^3 */
+#define GSL_CONST_MKSA_UK_GALLON (4.546092e-3) /* m^3 */
+#define GSL_CONST_MKSA_MILES_PER_HOUR (4.4704e-1) /* m / s */
+#define GSL_CONST_MKSA_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */
+#define GSL_CONST_MKSA_KNOT (5.14444444444e-1) /* m / s */
+#define GSL_CONST_MKSA_POUND_MASS (4.5359237e-1) /* kg */
+#define GSL_CONST_MKSA_OUNCE_MASS (2.8349523125e-2) /* kg */
+#define GSL_CONST_MKSA_TON (9.0718474e2) /* kg */
+#define GSL_CONST_MKSA_METRIC_TON (1e3) /* kg */
+#define GSL_CONST_MKSA_UK_TON (1.0160469088e3) /* kg */
+#define GSL_CONST_MKSA_TROY_OUNCE (3.1103475e-2) /* kg */
+#define GSL_CONST_MKSA_CARAT (2e-4) /* kg */
+#define GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS (1.660538782e-27) /* kg */
+#define GSL_CONST_MKSA_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */
+#define GSL_CONST_MKSA_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */
+#define GSL_CONST_MKSA_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */
+#define GSL_CONST_MKSA_POUNDAL (1.38255e-1) /* kg m / s^2 */
+#define GSL_CONST_MKSA_CALORIE (4.1868e0) /* kg m^2 / s^2 */
+#define GSL_CONST_MKSA_BTU (1.05505585262e3) /* kg m^2 / s^2 */
+#define GSL_CONST_MKSA_THERM (1.05506e8) /* kg m^2 / s^2 */
+#define GSL_CONST_MKSA_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */
+#define GSL_CONST_MKSA_BAR (1e5) /* kg / m s^2 */
+#define GSL_CONST_MKSA_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */
+#define GSL_CONST_MKSA_TORR (1.33322368421e2) /* kg / m s^2 */
+#define GSL_CONST_MKSA_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */
+#define GSL_CONST_MKSA_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */
+#define GSL_CONST_MKSA_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */
+#define GSL_CONST_MKSA_PSI (6.89475729317e3) /* kg / m s^2 */
+#define GSL_CONST_MKSA_POISE (1e-1) /* kg m^-1 s^-1 */
+#define GSL_CONST_MKSA_STOKES (1e-4) /* m^2 / s */
+#define GSL_CONST_MKSA_STILB (1e4) /* cd / m^2 */
+#define GSL_CONST_MKSA_LUMEN (1e0) /* cd sr */
+#define GSL_CONST_MKSA_LUX (1e0) /* cd sr / m^2 */
+#define GSL_CONST_MKSA_PHOT (1e4) /* cd sr / m^2 */
+#define GSL_CONST_MKSA_FOOTCANDLE (1.076e1) /* cd sr / m^2 */
+#define GSL_CONST_MKSA_LAMBERT (1e4) /* cd sr / m^2 */
+#define GSL_CONST_MKSA_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */
+#define GSL_CONST_MKSA_CURIE (3.7e10) /* 1 / s */
+#define GSL_CONST_MKSA_ROENTGEN (2.58e-4) /* A s / kg */
+#define GSL_CONST_MKSA_RAD (1e-2) /* m^2 / s^2 */
+#define GSL_CONST_MKSA_SOLAR_MASS (1.98892e30) /* kg */
+#define GSL_CONST_MKSA_BOHR_RADIUS (5.291772083e-11) /* m */
+#define GSL_CONST_MKSA_NEWTON (1e0) /* kg m / s^2 */
+#define GSL_CONST_MKSA_DYNE (1e-5) /* kg m / s^2 */
+#define GSL_CONST_MKSA_JOULE (1e0) /* kg m^2 / s^2 */
+#define GSL_CONST_MKSA_ERG (1e-7) /* kg m^2 / s^2 */
+#define GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT (5.67040047374e-8) /* kg / K^4 s^3 */
+#define GSL_CONST_MKSA_THOMSON_CROSS_SECTION (6.65245893699e-29) /* m^2 */
+#define GSL_CONST_MKSA_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */
+#define GSL_CONST_MKSA_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */
+#define GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */
+#define GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */
+#define GSL_CONST_MKSA_FARADAY (9.64853429775e4) /* A s / mol */
+#define GSL_CONST_MKSA_ELECTRON_CHARGE (1.602176487e-19) /* A s */
+#define GSL_CONST_MKSA_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */
+#define GSL_CONST_MKSA_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */
+#define GSL_CONST_MKSA_DEBYE (3.33564095198e-30) /* A s^2 / m^2 */
+#define GSL_CONST_MKSA_GAUSS (1e-4) /* kg / A s^2 */
+
+#endif /* __GSL_CONST_MKSA__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_num.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_num.h
new file mode 100644
index 00000000..385a660f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_const_num.h
@@ -0,0 +1,43 @@
+/* const/gsl_const_num.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ * 2006, 2007, 2008, 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_CONST_NUM__
+#define __GSL_CONST_NUM__
+
+#define GSL_CONST_NUM_FINE_STRUCTURE (7.297352533e-3) /* 1 */
+#define GSL_CONST_NUM_AVOGADRO (6.02214199e23) /* 1 / mol */
+#define GSL_CONST_NUM_YOTTA (1e24) /* 1 */
+#define GSL_CONST_NUM_ZETTA (1e21) /* 1 */
+#define GSL_CONST_NUM_EXA (1e18) /* 1 */
+#define GSL_CONST_NUM_PETA (1e15) /* 1 */
+#define GSL_CONST_NUM_TERA (1e12) /* 1 */
+#define GSL_CONST_NUM_GIGA (1e9) /* 1 */
+#define GSL_CONST_NUM_MEGA (1e6) /* 1 */
+#define GSL_CONST_NUM_KILO (1e3) /* 1 */
+#define GSL_CONST_NUM_MILLI (1e-3) /* 1 */
+#define GSL_CONST_NUM_MICRO (1e-6) /* 1 */
+#define GSL_CONST_NUM_NANO (1e-9) /* 1 */
+#define GSL_CONST_NUM_PICO (1e-12) /* 1 */
+#define GSL_CONST_NUM_FEMTO (1e-15) /* 1 */
+#define GSL_CONST_NUM_ATTO (1e-18) /* 1 */
+#define GSL_CONST_NUM_ZEPTO (1e-21) /* 1 */
+#define GSL_CONST_NUM_YOCTO (1e-24) /* 1 */
+
+#endif /* __GSL_CONST_NUM__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_deriv.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_deriv.h
new file mode 100644
index 00000000..7f4694fe
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_deriv.h
@@ -0,0 +1,50 @@
+/* deriv/gsl_deriv.h
+ *
+ * Copyright (C) 2000 David Morrison
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_DERIV_H__
+#define __GSL_DERIV_H__
+#include <gsl/gsl_math.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_deriv_central (const gsl_function *f,
+ double x, double h,
+ double *result, double *abserr);
+
+int gsl_deriv_backward (const gsl_function *f,
+ double x, double h,
+ double *result, double *abserr);
+
+int gsl_deriv_forward (const gsl_function *f,
+ double x, double h,
+ double *result, double *abserr);
+
+__END_DECLS
+
+#endif /* __GSL_DERIV_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex.h
new file mode 100644
index 00000000..cb4d0880
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex.h
@@ -0,0 +1,55 @@
+/* fft/gsl_dft_complex.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_DFT_COMPLEX_H__
+#define __GSL_DFT_COMPLEX_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_dft_complex_forward (const double data[], const size_t stride, const size_t n,
+ double result[]);
+
+int gsl_dft_complex_backward (const double data[], const size_t stride, const size_t n,
+ double result[]);
+
+int gsl_dft_complex_inverse (const double data[], const size_t stride, const size_t n,
+ double result[]);
+
+int gsl_dft_complex_transform (const double data[], const size_t stride, const size_t n,
+ double result[], const gsl_fft_direction sign);
+
+__END_DECLS
+
+#endif /* __GSL_DFT_COMPLEX_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex_float.h
new file mode 100644
index 00000000..c511ac09
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_dft_complex_float.h
@@ -0,0 +1,55 @@
+/* fft/gsl_dft_complex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_DFT_COMPLEX_FLOAT_H__
+#define __GSL_DFT_COMPLEX_FLOAT_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_dft_complex_float_forward (const float data[], const size_t stride, const size_t n,
+ float result[]);
+
+int gsl_dft_complex_float_backward (const float data[], const size_t stride, const size_t n,
+ float result[]);
+
+int gsl_dft_complex_float_inverse (const float data[], const size_t stride, const size_t n,
+ float result[]);
+
+int gsl_dft_complex_float_transform (const float data[], const size_t stride, const size_t n,
+ float result[], const gsl_fft_direction sign);
+
+__END_DECLS
+
+#endif /* __GSL_DFT_COMPLEX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_dht.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_dht.h
new file mode 100644
index 00000000..bfc4b2ff
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_dht.h
@@ -0,0 +1,87 @@
+/* dht/gsl_dht.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman
+ */
+#ifndef __GSL_DHT_H__
+#define __GSL_DHT_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+struct gsl_dht_struct {
+ size_t size; /* size of the sample arrays to be transformed */
+ double nu; /* Bessel function order */
+ double xmax; /* the upper limit to the x-sampling domain */
+ double kmax; /* the upper limit to the k-sampling domain */
+ double * j; /* array of computed J_nu zeros, j_{nu,s} = j[s] */
+ double * Jjj; /* transform numerator, J_nu(j_i j_m / j_N) */
+ double * J2; /* transform denominator, J_{nu+1}^2(j_m) */
+};
+typedef struct gsl_dht_struct gsl_dht;
+
+
+/* Create a new transform object for a given size
+ * sampling array on the domain [0, xmax].
+ */
+gsl_dht * gsl_dht_alloc(size_t size);
+gsl_dht * gsl_dht_new(size_t size, double nu, double xmax);
+
+/* Recalculate a transform object for given values of nu, xmax.
+ * You cannot change the size of the object since the internal
+ * allocation is reused.
+ */
+int gsl_dht_init(gsl_dht * t, double nu, double xmax);
+
+/* The n'th computed x sample point for a given transform.
+ * 0 <= n <= size-1
+ */
+double gsl_dht_x_sample(const gsl_dht * t, int n);
+
+
+/* The n'th computed k sample point for a given transform.
+ * 0 <= n <= size-1
+ */
+double gsl_dht_k_sample(const gsl_dht * t, int n);
+
+
+/* Free a transform object.
+ */
+void gsl_dht_free(gsl_dht * t);
+
+
+/* Perform a transform on a sampled array.
+ * f_in[0] ... f_in[size-1] and similarly for f_out[]
+ */
+int gsl_dht_apply(const gsl_dht * t, double * f_in, double * f_out);
+
+
+__END_DECLS
+
+#endif /* __GSL_DHT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_diff.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_diff.h
new file mode 100644
index 00000000..a145894f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_diff.h
@@ -0,0 +1,52 @@
+/* diff/gsl_diff.h
+ *
+ * Copyright (C) 2000 David Morrison
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_DIFF_H__
+#define __GSL_DIFF_H__
+#include <gsl/gsl_math.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+#ifndef GSL_DISABLE_DEPRECATED
+int gsl_diff_central (const gsl_function *f,
+ double x,
+ double *result, double *abserr);
+
+int gsl_diff_backward (const gsl_function *f,
+ double x,
+ double *result, double *abserr);
+
+int gsl_diff_forward (const gsl_function *f,
+ double x,
+ double *result, double *abserr);
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_DIFF_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_eigen.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_eigen.h
new file mode 100644
index 00000000..6de8dba1
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_eigen.h
@@ -0,0 +1,347 @@
+/* eigen/gsl_eigen.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_EIGEN_H__
+#define __GSL_EIGEN_H__
+
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct {
+ size_t size;
+ double * d;
+ double * sd;
+} gsl_eigen_symm_workspace;
+
+gsl_eigen_symm_workspace * gsl_eigen_symm_alloc (const size_t n);
+void gsl_eigen_symm_free (gsl_eigen_symm_workspace * w);
+int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, gsl_eigen_symm_workspace * w);
+
+typedef struct {
+ size_t size;
+ double * d;
+ double * sd;
+ double * gc;
+ double * gs;
+} gsl_eigen_symmv_workspace;
+
+gsl_eigen_symmv_workspace * gsl_eigen_symmv_alloc (const size_t n);
+void gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * w);
+int gsl_eigen_symmv (gsl_matrix * A, gsl_vector * eval, gsl_matrix * evec, gsl_eigen_symmv_workspace * w);
+
+typedef struct {
+ size_t size;
+ double * d;
+ double * sd;
+ double * tau;
+} gsl_eigen_herm_workspace;
+
+gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const size_t n);
+void gsl_eigen_herm_free (gsl_eigen_herm_workspace * w);
+int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * eval,
+ gsl_eigen_herm_workspace * w);
+
+typedef struct {
+ size_t size;
+ double * d;
+ double * sd;
+ double * tau;
+ double * gc;
+ double * gs;
+} gsl_eigen_hermv_workspace;
+
+gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const size_t n);
+void gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * w);
+int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * eval,
+ gsl_matrix_complex * evec,
+ gsl_eigen_hermv_workspace * w);
+
+typedef struct {
+ size_t size; /* matrix size */
+ size_t max_iterations; /* max iterations since last eigenvalue found */
+ size_t n_iter; /* number of iterations since last eigenvalue found */
+ size_t n_evals; /* number of eigenvalues found so far */
+
+ int compute_t; /* compute Schur form T = Z^t A Z */
+
+ gsl_matrix *H; /* pointer to Hessenberg matrix */
+ gsl_matrix *Z; /* pointer to Schur vector matrix */
+} gsl_eigen_francis_workspace;
+
+gsl_eigen_francis_workspace * gsl_eigen_francis_alloc (void);
+void gsl_eigen_francis_free (gsl_eigen_francis_workspace * w);
+void gsl_eigen_francis_T (const int compute_t,
+ gsl_eigen_francis_workspace * w);
+int gsl_eigen_francis (gsl_matrix * H, gsl_vector_complex * eval,
+ gsl_eigen_francis_workspace * w);
+int gsl_eigen_francis_Z (gsl_matrix * H, gsl_vector_complex * eval,
+ gsl_matrix * Z,
+ gsl_eigen_francis_workspace * w);
+
+typedef struct {
+ size_t size; /* size of matrices */
+ gsl_vector *diag; /* diagonal matrix elements from balancing */
+ gsl_vector *tau; /* Householder coefficients */
+ gsl_matrix *Z; /* pointer to Z matrix */
+ int do_balance; /* perform balancing transformation? */
+ size_t n_evals; /* number of eigenvalues found */
+
+ gsl_eigen_francis_workspace *francis_workspace_p;
+} gsl_eigen_nonsymm_workspace;
+
+gsl_eigen_nonsymm_workspace * gsl_eigen_nonsymm_alloc (const size_t n);
+void gsl_eigen_nonsymm_free (gsl_eigen_nonsymm_workspace * w);
+void gsl_eigen_nonsymm_params (const int compute_t, const int balance,
+ gsl_eigen_nonsymm_workspace *w);
+int gsl_eigen_nonsymm (gsl_matrix * A, gsl_vector_complex * eval,
+ gsl_eigen_nonsymm_workspace * w);
+int gsl_eigen_nonsymm_Z (gsl_matrix * A, gsl_vector_complex * eval,
+ gsl_matrix * Z, gsl_eigen_nonsymm_workspace * w);
+
+typedef struct {
+ size_t size; /* size of matrices */
+ gsl_vector *work; /* scratch workspace */
+ gsl_vector *work2; /* scratch workspace */
+ gsl_vector *work3; /* scratch workspace */
+
+ gsl_matrix *Z; /* pointer to Schur vectors */
+
+ gsl_eigen_nonsymm_workspace *nonsymm_workspace_p;
+} gsl_eigen_nonsymmv_workspace;
+
+gsl_eigen_nonsymmv_workspace * gsl_eigen_nonsymmv_alloc (const size_t n);
+void gsl_eigen_nonsymmv_free (gsl_eigen_nonsymmv_workspace * w);
+void gsl_eigen_nonsymmv_params (const int balance,
+ gsl_eigen_nonsymmv_workspace *w);
+int gsl_eigen_nonsymmv (gsl_matrix * A, gsl_vector_complex * eval,
+ gsl_matrix_complex * evec,
+ gsl_eigen_nonsymmv_workspace * w);
+int gsl_eigen_nonsymmv_Z (gsl_matrix * A, gsl_vector_complex * eval,
+ gsl_matrix_complex * evec, gsl_matrix * Z,
+ gsl_eigen_nonsymmv_workspace * w);
+
+typedef struct {
+ size_t size; /* size of matrices */
+ gsl_eigen_symm_workspace *symm_workspace_p;
+} gsl_eigen_gensymm_workspace;
+
+gsl_eigen_gensymm_workspace * gsl_eigen_gensymm_alloc (const size_t n);
+void gsl_eigen_gensymm_free (gsl_eigen_gensymm_workspace * w);
+int gsl_eigen_gensymm (gsl_matrix * A, gsl_matrix * B,
+ gsl_vector * eval, gsl_eigen_gensymm_workspace * w);
+int gsl_eigen_gensymm_standardize (gsl_matrix * A, const gsl_matrix * B);
+
+typedef struct {
+ size_t size; /* size of matrices */
+ gsl_eigen_symmv_workspace *symmv_workspace_p;
+} gsl_eigen_gensymmv_workspace;
+
+gsl_eigen_gensymmv_workspace * gsl_eigen_gensymmv_alloc (const size_t n);
+void gsl_eigen_gensymmv_free (gsl_eigen_gensymmv_workspace * w);
+int gsl_eigen_gensymmv (gsl_matrix * A, gsl_matrix * B,
+ gsl_vector * eval, gsl_matrix * evec,
+ gsl_eigen_gensymmv_workspace * w);
+
+typedef struct {
+ size_t size; /* size of matrices */
+ gsl_eigen_herm_workspace *herm_workspace_p;
+} gsl_eigen_genherm_workspace;
+
+gsl_eigen_genherm_workspace * gsl_eigen_genherm_alloc (const size_t n);
+void gsl_eigen_genherm_free (gsl_eigen_genherm_workspace * w);
+int gsl_eigen_genherm (gsl_matrix_complex * A, gsl_matrix_complex * B,
+ gsl_vector * eval, gsl_eigen_genherm_workspace * w);
+int gsl_eigen_genherm_standardize (gsl_matrix_complex * A,
+ const gsl_matrix_complex * B);
+
+typedef struct {
+ size_t size; /* size of matrices */
+ gsl_eigen_hermv_workspace *hermv_workspace_p;
+} gsl_eigen_genhermv_workspace;
+
+gsl_eigen_genhermv_workspace * gsl_eigen_genhermv_alloc (const size_t n);
+void gsl_eigen_genhermv_free (gsl_eigen_genhermv_workspace * w);
+int gsl_eigen_genhermv (gsl_matrix_complex * A, gsl_matrix_complex * B,
+ gsl_vector * eval, gsl_matrix_complex * evec,
+ gsl_eigen_genhermv_workspace * w);
+
+typedef struct {
+ size_t size; /* size of matrices */
+ gsl_vector *work; /* scratch workspace */
+
+ size_t n_evals; /* number of eigenvalues found */
+ size_t max_iterations; /* maximum QZ iterations allowed */
+ size_t n_iter; /* number of iterations since last eigenvalue found */
+ double eshift; /* exceptional shift counter */
+
+ int needtop; /* need to compute top index? */
+
+ double atol; /* tolerance for splitting A matrix */
+ double btol; /* tolerance for splitting B matrix */
+
+ double ascale; /* scaling factor for shifts */
+ double bscale; /* scaling factor for shifts */
+
+ gsl_matrix *H; /* pointer to hessenberg matrix */
+ gsl_matrix *R; /* pointer to upper triangular matrix */
+
+ int compute_s; /* compute generalized Schur form S */
+ int compute_t; /* compute generalized Schur form T */
+
+ gsl_matrix *Q; /* pointer to left Schur vectors */
+ gsl_matrix *Z; /* pointer to right Schur vectors */
+} gsl_eigen_gen_workspace;
+
+gsl_eigen_gen_workspace * gsl_eigen_gen_alloc (const size_t n);
+void gsl_eigen_gen_free (gsl_eigen_gen_workspace * w);
+void gsl_eigen_gen_params (const int compute_s, const int compute_t,
+ const int balance, gsl_eigen_gen_workspace * w);
+int gsl_eigen_gen (gsl_matrix * A, gsl_matrix * B,
+ gsl_vector_complex * alpha, gsl_vector * beta,
+ gsl_eigen_gen_workspace * w);
+int gsl_eigen_gen_QZ (gsl_matrix * A, gsl_matrix * B,
+ gsl_vector_complex * alpha, gsl_vector * beta,
+ gsl_matrix * Q, gsl_matrix * Z,
+ gsl_eigen_gen_workspace * w);
+
+typedef struct {
+ size_t size; /* size of matrices */
+
+ gsl_vector *work1; /* 1-norm of columns of A */
+ gsl_vector *work2; /* 1-norm of columns of B */
+ gsl_vector *work3; /* real part of eigenvector */
+ gsl_vector *work4; /* imag part of eigenvector */
+ gsl_vector *work5; /* real part of back-transformed eigenvector */
+ gsl_vector *work6; /* imag part of back-transformed eigenvector */
+
+ gsl_matrix *Q; /* pointer to left Schur vectors */
+ gsl_matrix *Z; /* pointer to right Schur vectors */
+
+ gsl_eigen_gen_workspace *gen_workspace_p;
+} gsl_eigen_genv_workspace;
+
+gsl_eigen_genv_workspace * gsl_eigen_genv_alloc (const size_t n);
+void gsl_eigen_genv_free (gsl_eigen_genv_workspace * w);
+int gsl_eigen_genv (gsl_matrix * A, gsl_matrix * B,
+ gsl_vector_complex * alpha, gsl_vector * beta,
+ gsl_matrix_complex * evec,
+ gsl_eigen_genv_workspace * w);
+int gsl_eigen_genv_QZ (gsl_matrix * A, gsl_matrix * B,
+ gsl_vector_complex * alpha, gsl_vector * beta,
+ gsl_matrix_complex * evec,
+ gsl_matrix * Q, gsl_matrix * Z,
+ gsl_eigen_genv_workspace * w);
+
+
+
+typedef enum {
+ GSL_EIGEN_SORT_VAL_ASC,
+ GSL_EIGEN_SORT_VAL_DESC,
+ GSL_EIGEN_SORT_ABS_ASC,
+ GSL_EIGEN_SORT_ABS_DESC
+}
+gsl_eigen_sort_t;
+
+/* Sort eigensystem results based on eigenvalues.
+ * Sorts in order of increasing value or increasing
+ * absolute value.
+ *
+ * exceptions: GSL_EBADLEN
+ */
+
+int gsl_eigen_symmv_sort(gsl_vector * eval, gsl_matrix * evec,
+ gsl_eigen_sort_t sort_type);
+
+int gsl_eigen_hermv_sort(gsl_vector * eval, gsl_matrix_complex * evec,
+ gsl_eigen_sort_t sort_type);
+
+int gsl_eigen_nonsymmv_sort(gsl_vector_complex * eval,
+ gsl_matrix_complex * evec,
+ gsl_eigen_sort_t sort_type);
+
+int gsl_eigen_gensymmv_sort (gsl_vector * eval, gsl_matrix * evec,
+ gsl_eigen_sort_t sort_type);
+
+int gsl_eigen_genhermv_sort (gsl_vector * eval, gsl_matrix_complex * evec,
+ gsl_eigen_sort_t sort_type);
+
+int gsl_eigen_genv_sort (gsl_vector_complex * alpha, gsl_vector * beta,
+ gsl_matrix_complex * evec,
+ gsl_eigen_sort_t sort_type);
+
+/* Prototypes for the schur module */
+
+int gsl_schur_gen_eigvals(const gsl_matrix *A, const gsl_matrix *B,
+ double *wr1, double *wr2, double *wi,
+ double *scale1, double *scale2);
+
+int gsl_schur_solve_equation(double ca, const gsl_matrix *A, double z,
+ double d1, double d2, const gsl_vector *b,
+ gsl_vector *x, double *s, double *xnorm,
+ double smin);
+
+int gsl_schur_solve_equation_z(double ca, const gsl_matrix *A,
+ gsl_complex *z, double d1, double d2,
+ const gsl_vector_complex *b,
+ gsl_vector_complex *x, double *s,
+ double *xnorm, double smin);
+
+
+/* The following functions are obsolete: */
+
+/* Eigensolve by Jacobi Method
+ *
+ * The data in the matrix input is destroyed.
+ *
+ * exceptions:
+ */
+int
+gsl_eigen_jacobi(gsl_matrix * matrix,
+ gsl_vector * eval,
+ gsl_matrix * evec,
+ unsigned int max_rot,
+ unsigned int * nrot);
+
+
+/* Invert by Jacobi Method
+ *
+ * exceptions:
+ */
+int
+gsl_eigen_invert_jacobi(const gsl_matrix * matrix,
+ gsl_matrix * ainv,
+ unsigned int max_rot);
+
+
+
+__END_DECLS
+
+#endif /* __GSL_EIGEN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_errno.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_errno.h
new file mode 100644
index 00000000..b8e99b43
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_errno.h
@@ -0,0 +1,154 @@
+/* err/gsl_errno.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_ERRNO_H__
+#define __GSL_ERRNO_H__
+
+#include <stdio.h>
+#include <errno.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+enum {
+ GSL_SUCCESS = 0,
+ GSL_FAILURE = -1,
+ GSL_CONTINUE = -2, /* iteration has not converged */
+ GSL_EDOM = 1, /* input domain error, e.g sqrt(-1) */
+ GSL_ERANGE = 2, /* output range error, e.g. exp(1e100) */
+ GSL_EFAULT = 3, /* invalid pointer */
+ GSL_EINVAL = 4, /* invalid argument supplied by user */
+ GSL_EFAILED = 5, /* generic failure */
+ GSL_EFACTOR = 6, /* factorization failed */
+ GSL_ESANITY = 7, /* sanity check failed - shouldn't happen */
+ GSL_ENOMEM = 8, /* malloc failed */
+ GSL_EBADFUNC = 9, /* problem with user-supplied function */
+ GSL_ERUNAWAY = 10, /* iterative process is out of control */
+ GSL_EMAXITER = 11, /* exceeded max number of iterations */
+ GSL_EZERODIV = 12, /* tried to divide by zero */
+ GSL_EBADTOL = 13, /* user specified an invalid tolerance */
+ GSL_ETOL = 14, /* failed to reach the specified tolerance */
+ GSL_EUNDRFLW = 15, /* underflow */
+ GSL_EOVRFLW = 16, /* overflow */
+ GSL_ELOSS = 17, /* loss of accuracy */
+ GSL_EROUND = 18, /* failed because of roundoff error */
+ GSL_EBADLEN = 19, /* matrix, vector lengths are not conformant */
+ GSL_ENOTSQR = 20, /* matrix not square */
+ GSL_ESING = 21, /* apparent singularity detected */
+ GSL_EDIVERGE = 22, /* integral or series is divergent */
+ GSL_EUNSUP = 23, /* requested feature is not supported by the hardware */
+ GSL_EUNIMPL = 24, /* requested feature not (yet) implemented */
+ GSL_ECACHE = 25, /* cache limit exceeded */
+ GSL_ETABLE = 26, /* table limit exceeded */
+ GSL_ENOPROG = 27, /* iteration is not making progress towards solution */
+ GSL_ENOPROGJ = 28, /* jacobian evaluations are not improving the solution */
+ GSL_ETOLF = 29, /* cannot reach the specified tolerance in F */
+ GSL_ETOLX = 30, /* cannot reach the specified tolerance in X */
+ GSL_ETOLG = 31, /* cannot reach the specified tolerance in gradient */
+ GSL_EOF = 32 /* end of file */
+} ;
+
+void gsl_error (const char * reason, const char * file, int line,
+ int gsl_errno);
+
+void gsl_stream_printf (const char *label, const char *file,
+ int line, const char *reason);
+
+const char * gsl_strerror (const int gsl_errno);
+
+typedef void gsl_error_handler_t (const char * reason, const char * file,
+ int line, int gsl_errno);
+
+typedef void gsl_stream_handler_t (const char * label, const char * file,
+ int line, const char * reason);
+
+gsl_error_handler_t *
+gsl_set_error_handler (gsl_error_handler_t * new_handler);
+
+gsl_error_handler_t *
+gsl_set_error_handler_off (void);
+
+gsl_stream_handler_t *
+gsl_set_stream_handler (gsl_stream_handler_t * new_handler);
+
+FILE * gsl_set_stream (FILE * new_stream);
+
+/* GSL_ERROR: call the error handler, and return the error code */
+
+#define GSL_ERROR(reason, gsl_errno) \
+ do { \
+ gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
+ return gsl_errno ; \
+ } while (0)
+
+/* GSL_ERROR_VAL: call the error handler, and return the given value */
+
+#define GSL_ERROR_VAL(reason, gsl_errno, value) \
+ do { \
+ gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
+ return value ; \
+ } while (0)
+
+/* GSL_ERROR_VOID: call the error handler, and then return
+ (for void functions which still need to generate an error) */
+
+#define GSL_ERROR_VOID(reason, gsl_errno) \
+ do { \
+ gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
+ return ; \
+ } while (0)
+
+/* GSL_ERROR_NULL suitable for out-of-memory conditions */
+
+#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
+
+/* Sometimes you have several status results returned from
+ * function calls and you want to combine them in some sensible
+ * way. You cannot produce a "total" status condition, but you can
+ * pick one from a set of conditions based on an implied hierarchy.
+ *
+ * In other words:
+ * you have: status_a, status_b, ...
+ * you want: status = (status_a if it is bad, or status_b if it is bad,...)
+ *
+ * In this example you consider status_a to be more important and
+ * it is checked first, followed by the others in the order specified.
+ *
+ * Here are some dumb macros to do this.
+ */
+#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
+#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
+#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
+#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
+
+#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
+
+__END_DECLS
+
+#endif /* __GSL_ERRNO_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft.h
new file mode 100644
index 00000000..8870a888
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft.h
@@ -0,0 +1,51 @@
+/* fft/gsl_fft.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FFT_H__
+#define __GSL_FFT_H__
+
+#include <gsl/gsl_complex.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef enum
+ {
+ gsl_fft_forward = -1, gsl_fft_backward = +1
+ }
+gsl_fft_direction;
+
+/* this gives the sign in the formula
+
+ h(f) = \sum x(t) exp(+/- 2 pi i f t)
+
+ where - is the forward transform direction and + the inverse direction */
+
+__END_DECLS
+
+#endif /* __GSL_FFT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex.h
new file mode 100644
index 00000000..c13f7ea5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex.h
@@ -0,0 +1,136 @@
+/* fft/gsl_fft_complex.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FFT_COMPLEX_H__
+#define __GSL_FFT_COMPLEX_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Power of 2 routines */
+
+
+int gsl_fft_complex_radix2_forward (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_radix2_backward (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_radix2_inverse (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_radix2_transform (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_direction sign);
+
+int gsl_fft_complex_radix2_dif_forward (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_radix2_dif_backward (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_radix2_dif_inverse (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_radix2_dif_transform (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_direction sign);
+
+/* Mixed Radix general-N routines */
+
+typedef struct
+ {
+ size_t n;
+ size_t nf;
+ size_t factor[64];
+ gsl_complex *twiddle[64];
+ gsl_complex *trig;
+ }
+gsl_fft_complex_wavetable;
+
+typedef struct
+{
+ size_t n;
+ double *scratch;
+}
+gsl_fft_complex_workspace;
+
+
+gsl_fft_complex_wavetable *gsl_fft_complex_wavetable_alloc (size_t n);
+
+void gsl_fft_complex_wavetable_free (gsl_fft_complex_wavetable * wavetable);
+
+gsl_fft_complex_workspace *gsl_fft_complex_workspace_alloc (size_t n);
+
+void gsl_fft_complex_workspace_free (gsl_fft_complex_workspace * workspace);
+
+int gsl_fft_complex_memcpy (gsl_fft_complex_wavetable * dest,
+ gsl_fft_complex_wavetable * src);
+
+
+int gsl_fft_complex_forward (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_complex_wavetable * wavetable,
+ gsl_fft_complex_workspace * work);
+
+int gsl_fft_complex_backward (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_complex_wavetable * wavetable,
+ gsl_fft_complex_workspace * work);
+
+int gsl_fft_complex_inverse (gsl_complex_packed_array data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_complex_wavetable * wavetable,
+ gsl_fft_complex_workspace * work);
+
+int gsl_fft_complex_transform (gsl_complex_packed_array data,
+ const size_t stride, const size_t n,
+ const gsl_fft_complex_wavetable * wavetable,
+ gsl_fft_complex_workspace * work,
+ const gsl_fft_direction sign);
+
+__END_DECLS
+
+#endif /* __GSL_FFT_COMPLEX_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex_float.h
new file mode 100644
index 00000000..d3ff395f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_complex_float.h
@@ -0,0 +1,139 @@
+/* fft/gsl_fft_complex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FFT_COMPLEX_FLOAT_H__
+#define __GSL_FFT_COMPLEX_FLOAT_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Power of 2 routines */
+
+
+int gsl_fft_complex_float_radix2_forward (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_float_radix2_backward (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_float_radix2_inverse (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_float_radix2_transform (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_direction sign);
+
+int gsl_fft_complex_float_radix2_dif_forward (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_float_radix2_dif_backward (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_float_radix2_dif_inverse (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n);
+
+int gsl_fft_complex_float_radix2_dif_transform (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_direction sign);
+
+/* Mixed Radix general-N routines */
+
+typedef struct
+ {
+ size_t n;
+ size_t nf;
+ size_t factor[64];
+ gsl_complex_float *twiddle[64];
+ gsl_complex_float *trig;
+ }
+gsl_fft_complex_wavetable_float;
+
+typedef struct
+{
+ size_t n;
+ float *scratch;
+}
+gsl_fft_complex_workspace_float;
+
+
+gsl_fft_complex_wavetable_float *gsl_fft_complex_wavetable_float_alloc (size_t n);
+
+void gsl_fft_complex_wavetable_float_free (gsl_fft_complex_wavetable_float * wavetable);
+
+gsl_fft_complex_workspace_float *gsl_fft_complex_workspace_float_alloc (size_t n);
+
+void gsl_fft_complex_workspace_float_free (gsl_fft_complex_workspace_float * workspace);
+
+
+int gsl_fft_complex_float_memcpy (gsl_fft_complex_wavetable_float * dest,
+ gsl_fft_complex_wavetable_float * src);
+
+
+int gsl_fft_complex_float_forward (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_complex_wavetable_float * wavetable,
+ gsl_fft_complex_workspace_float * work);
+
+int gsl_fft_complex_float_backward (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_complex_wavetable_float * wavetable,
+ gsl_fft_complex_workspace_float * work);
+
+int gsl_fft_complex_float_inverse (gsl_complex_packed_array_float data,
+ const size_t stride,
+ const size_t n,
+ const gsl_fft_complex_wavetable_float * wavetable,
+ gsl_fft_complex_workspace_float * work);
+
+int gsl_fft_complex_float_transform (gsl_complex_packed_array_float data,
+ const size_t stride, const size_t n,
+ const gsl_fft_complex_wavetable_float * wavetable,
+ gsl_fft_complex_workspace_float * work,
+ const gsl_fft_direction sign);
+
+__END_DECLS
+
+#endif /* __GSL_FFT_COMPLEX_FLOAT_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex.h
new file mode 100644
index 00000000..6751e476
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex.h
@@ -0,0 +1,86 @@
+/* fft/gsl_fft_halfcomplex.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FFT_HALFCOMPLEX_H__
+#define __GSL_FFT_HALFCOMPLEX_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+#include <gsl/gsl_fft_real.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_fft_halfcomplex_radix2_backward (double data[], const size_t stride, const size_t n);
+int gsl_fft_halfcomplex_radix2_inverse (double data[], const size_t stride, const size_t n);
+int gsl_fft_halfcomplex_radix2_transform (double data[], const size_t stride, const size_t n);
+
+typedef struct
+ {
+ size_t n;
+ size_t nf;
+ size_t factor[64];
+ gsl_complex *twiddle[64];
+ gsl_complex *trig;
+ }
+gsl_fft_halfcomplex_wavetable;
+
+gsl_fft_halfcomplex_wavetable * gsl_fft_halfcomplex_wavetable_alloc (size_t n);
+
+void
+gsl_fft_halfcomplex_wavetable_free (gsl_fft_halfcomplex_wavetable * wavetable);
+
+
+int gsl_fft_halfcomplex_backward (double data[], const size_t stride, const size_t n,
+ const gsl_fft_halfcomplex_wavetable * wavetable,
+ gsl_fft_real_workspace * work);
+
+int gsl_fft_halfcomplex_inverse (double data[], const size_t stride, const size_t n,
+ const gsl_fft_halfcomplex_wavetable * wavetable,
+ gsl_fft_real_workspace * work);
+
+int gsl_fft_halfcomplex_transform (double data[], const size_t stride, const size_t n,
+ const gsl_fft_halfcomplex_wavetable * wavetable,
+ gsl_fft_real_workspace * work);
+
+int
+gsl_fft_halfcomplex_unpack (const double halfcomplex_coefficient[],
+ double complex_coefficient[],
+ const size_t stride, const size_t n);
+
+int
+gsl_fft_halfcomplex_radix2_unpack (const double halfcomplex_coefficient[],
+ double complex_coefficient[],
+ const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_FFT_HALFCOMPLEX_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex_float.h
new file mode 100644
index 00000000..e3183675
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_halfcomplex_float.h
@@ -0,0 +1,86 @@
+/* fft/gsl_fft_halfcomplex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FFT_HALFCOMPLEX_FLOAT_H__
+#define __GSL_FFT_HALFCOMPLEX_FLOAT_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+#include <gsl/gsl_fft_real_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_fft_halfcomplex_float_radix2_backward (float data[], const size_t stride, const size_t n);
+int gsl_fft_halfcomplex_float_radix2_inverse (float data[], const size_t stride, const size_t n);
+int gsl_fft_halfcomplex_float_radix2_transform (float data[], const size_t stride, const size_t n);
+
+typedef struct
+ {
+ size_t n;
+ size_t nf;
+ size_t factor[64];
+ gsl_complex_float *twiddle[64];
+ gsl_complex_float *trig;
+ }
+gsl_fft_halfcomplex_wavetable_float;
+
+
+gsl_fft_halfcomplex_wavetable_float * gsl_fft_halfcomplex_wavetable_float_alloc (size_t n);
+
+void
+gsl_fft_halfcomplex_wavetable_float_free (gsl_fft_halfcomplex_wavetable_float * wavetable);
+
+int gsl_fft_halfcomplex_float_backward (float data[], const size_t stride, const size_t n,
+ const gsl_fft_halfcomplex_wavetable_float * wavetable,
+ gsl_fft_real_workspace_float * work);
+
+int gsl_fft_halfcomplex_float_inverse (float data[], const size_t stride, const size_t n,
+ const gsl_fft_halfcomplex_wavetable_float * wavetable,
+ gsl_fft_real_workspace_float * work);
+
+int gsl_fft_halfcomplex_float_transform (float data[], const size_t stride, const size_t n,
+ const gsl_fft_halfcomplex_wavetable_float * wavetable,
+ gsl_fft_real_workspace_float * work);
+
+int
+gsl_fft_halfcomplex_float_unpack (const float halfcomplex_coefficient[],
+ float complex_coefficient[],
+ const size_t stride, const size_t n);
+
+int
+gsl_fft_halfcomplex_float_radix2_unpack (const float halfcomplex_coefficient[],
+ float complex_coefficient[],
+ const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_FFT_HALFCOMPLEX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real.h
new file mode 100644
index 00000000..e07a6042
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real.h
@@ -0,0 +1,80 @@
+/* fft/gsl_fft_real.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FFT_REAL_H__
+#define __GSL_FFT_REAL_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_fft_real_radix2_transform (double data[], const size_t stride, const size_t n) ;
+
+typedef struct
+ {
+ size_t n;
+ size_t nf;
+ size_t factor[64];
+ gsl_complex *twiddle[64];
+ gsl_complex *trig;
+ }
+gsl_fft_real_wavetable;
+
+typedef struct
+ {
+ size_t n;
+ double *scratch;
+ }
+gsl_fft_real_workspace;
+
+gsl_fft_real_wavetable * gsl_fft_real_wavetable_alloc (size_t n);
+
+void gsl_fft_real_wavetable_free (gsl_fft_real_wavetable * wavetable);
+
+gsl_fft_real_workspace * gsl_fft_real_workspace_alloc (size_t n);
+
+void gsl_fft_real_workspace_free (gsl_fft_real_workspace * workspace);
+
+
+int gsl_fft_real_transform (double data[], const size_t stride, const size_t n,
+ const gsl_fft_real_wavetable * wavetable,
+ gsl_fft_real_workspace * work);
+
+
+int gsl_fft_real_unpack (const double real_coefficient[],
+ double complex_coefficient[],
+ const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_FFT_REAL_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real_float.h
new file mode 100644
index 00000000..7a7732f2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fft_real_float.h
@@ -0,0 +1,79 @@
+/* fft/gsl_fft_real_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FFT_REAL_FLOAT_H__
+#define __GSL_FFT_REAL_FLOAT_H__
+
+#include <stddef.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_fft.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_fft_real_float_radix2_transform (float data[], const size_t stride, const size_t n) ;
+
+typedef struct
+ {
+ size_t n;
+ size_t nf;
+ size_t factor[64];
+ gsl_complex_float *twiddle[64];
+ gsl_complex_float *trig;
+ }
+gsl_fft_real_wavetable_float;
+
+typedef struct
+ {
+ size_t n;
+ float *scratch;
+ }
+gsl_fft_real_workspace_float;
+
+gsl_fft_real_wavetable_float * gsl_fft_real_wavetable_float_alloc (size_t n);
+
+void gsl_fft_real_wavetable_float_free (gsl_fft_real_wavetable_float * wavetable);
+
+gsl_fft_real_workspace_float * gsl_fft_real_workspace_float_alloc (size_t n);
+
+void gsl_fft_real_workspace_float_free (gsl_fft_real_workspace_float * workspace);
+
+int gsl_fft_real_float_transform (float data[], const size_t stride, const size_t n,
+ const gsl_fft_real_wavetable_float * wavetable,
+ gsl_fft_real_workspace_float * work);
+
+
+int gsl_fft_real_float_unpack (const float real_float_coefficient[],
+ float complex_coefficient[],
+ const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_FFT_REAL_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_fit.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fit.h
new file mode 100644
index 00000000..de83a41d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_fit.h
@@ -0,0 +1,85 @@
+/* fit/gsl_fit.h
+ *
+ * Copyright (C) 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_FIT_H__
+#define __GSL_FIT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_math.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_fit_linear (const double * x, const size_t xstride,
+ const double * y, const size_t ystride,
+ const size_t n,
+ double * c0, double * c1,
+ double * cov00, double * cov01, double * cov11,
+ double * sumsq);
+
+
+int gsl_fit_wlinear (const double * x, const size_t xstride,
+ const double * w, const size_t wstride,
+ const double * y, const size_t ystride,
+ const size_t n,
+ double * c0, double * c1,
+ double * cov00, double * cov01, double * cov11,
+ double * chisq);
+
+int
+gsl_fit_linear_est (const double x,
+ const double c0, const double c1,
+ const double cov00, const double cov01, const double cov11,
+ double *y, double *y_err);
+
+
+int gsl_fit_mul (const double * x, const size_t xstride,
+ const double * y, const size_t ystride,
+ const size_t n,
+ double * c1,
+ double * cov11,
+ double * sumsq);
+
+int gsl_fit_wmul (const double * x, const size_t xstride,
+ const double * w, const size_t wstride,
+ const double * y, const size_t ystride,
+ const size_t n,
+ double * c1,
+ double * cov11,
+ double * sumsq);
+
+
+int
+gsl_fit_mul_est (const double x,
+ const double c1,
+ const double cov11,
+ double *y, double *y_err);
+
+__END_DECLS
+
+#endif /* __GSL_FIT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_heapsort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_heapsort.h
new file mode 100644
index 00000000..213fae1e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_heapsort.h
@@ -0,0 +1,44 @@
+/* sort/gsl_heapsort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_HEAPSORT_H__
+#define __GSL_HEAPSORT_H__
+
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef int (*gsl_comparison_fn_t) (const void *, const void *);
+
+void gsl_heapsort (void * array, size_t count, size_t size, gsl_comparison_fn_t compare);
+int gsl_heapsort_index (size_t * p, const void * array, size_t count, size_t size, gsl_comparison_fn_t compare);
+
+__END_DECLS
+
+#endif /* __GSL_HEAPSORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram.h
new file mode 100644
index 00000000..e8375c64
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram.h
@@ -0,0 +1,134 @@
+/* histogram/gsl_histogram.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_HISTOGRAM_H__
+#define __GSL_HISTOGRAM_H__
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct {
+ size_t n ;
+ double * range ;
+ double * bin ;
+} gsl_histogram ;
+
+typedef struct {
+ size_t n ;
+ double * range ;
+ double * sum ;
+} gsl_histogram_pdf ;
+
+gsl_histogram * gsl_histogram_alloc (size_t n);
+
+gsl_histogram * gsl_histogram_calloc (size_t n);
+gsl_histogram * gsl_histogram_calloc_uniform (const size_t n, const double xmin, const double xmax);
+void gsl_histogram_free (gsl_histogram * h);
+int gsl_histogram_increment (gsl_histogram * h, double x);
+int gsl_histogram_accumulate (gsl_histogram * h, double x, double weight);
+int gsl_histogram_find (const gsl_histogram * h,
+ const double x, size_t * i);
+
+double gsl_histogram_get (const gsl_histogram * h, size_t i);
+int gsl_histogram_get_range (const gsl_histogram * h, size_t i,
+ double * lower, double * upper);
+
+double gsl_histogram_max (const gsl_histogram * h);
+double gsl_histogram_min (const gsl_histogram * h);
+size_t gsl_histogram_bins (const gsl_histogram * h);
+
+void gsl_histogram_reset (gsl_histogram * h);
+
+gsl_histogram * gsl_histogram_calloc_range(size_t n, double * range);
+
+int
+gsl_histogram_set_ranges (gsl_histogram * h, const double range[], size_t size);
+int
+gsl_histogram_set_ranges_uniform (gsl_histogram * h, double xmin, double xmax);
+
+
+
+int
+gsl_histogram_memcpy(gsl_histogram * dest, const gsl_histogram * source);
+
+gsl_histogram *
+gsl_histogram_clone(const gsl_histogram * source);
+
+double gsl_histogram_max_val (const gsl_histogram * h);
+
+size_t gsl_histogram_max_bin (const gsl_histogram * h);
+
+double gsl_histogram_min_val (const gsl_histogram * h);
+
+size_t gsl_histogram_min_bin (const gsl_histogram * h);
+
+int
+gsl_histogram_equal_bins_p(const gsl_histogram *h1, const gsl_histogram *h2);
+
+int
+gsl_histogram_add(gsl_histogram *h1, const gsl_histogram *h2);
+
+int
+gsl_histogram_sub(gsl_histogram *h1, const gsl_histogram *h2);
+
+int
+gsl_histogram_mul(gsl_histogram *h1, const gsl_histogram *h2);
+
+int
+gsl_histogram_div(gsl_histogram *h1, const gsl_histogram *h2);
+
+int
+gsl_histogram_scale(gsl_histogram *h, double scale);
+
+int
+gsl_histogram_shift (gsl_histogram * h, double shift);
+
+
+double gsl_histogram_sigma (const gsl_histogram * h);
+
+double gsl_histogram_mean (const gsl_histogram * h);
+
+double gsl_histogram_sum (const gsl_histogram * h);
+
+int gsl_histogram_fwrite (FILE * stream, const gsl_histogram * h) ;
+int gsl_histogram_fread (FILE * stream, gsl_histogram * h);
+int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h,
+ const char * range_format, const char * bin_format);
+int gsl_histogram_fscanf (FILE * stream, gsl_histogram * h);
+
+gsl_histogram_pdf * gsl_histogram_pdf_alloc (const size_t n);
+int gsl_histogram_pdf_init (gsl_histogram_pdf * p, const gsl_histogram * h);
+void gsl_histogram_pdf_free (gsl_histogram_pdf * p);
+double gsl_histogram_pdf_sample (const gsl_histogram_pdf * p, double r);
+
+__END_DECLS
+
+#endif /* __GSL_HISTOGRAM_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram2d.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram2d.h
new file mode 100644
index 00000000..90065ac0
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_histogram2d.h
@@ -0,0 +1,172 @@
+/* histogram/gsl_histogram2d.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_HISTOGRAM2D_H__
+#define __GSL_HISTOGRAM2D_H__
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct {
+ size_t nx, ny ;
+ double * xrange ;
+ double * yrange ;
+ double * bin ;
+} gsl_histogram2d ;
+
+typedef struct {
+ size_t nx, ny ;
+ double * xrange ;
+ double * yrange ;
+ double * sum ;
+} gsl_histogram2d_pdf ;
+
+gsl_histogram2d * gsl_histogram2d_alloc (const size_t nx, const size_t ny);
+gsl_histogram2d * gsl_histogram2d_calloc (const size_t nx, const size_t ny);
+gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny,
+ const double xmin, const double xmax,
+ const double ymin, const double ymax);
+
+void gsl_histogram2d_free (gsl_histogram2d * h);
+
+int gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y);
+int gsl_histogram2d_accumulate (gsl_histogram2d * h,
+ double x, double y, double weight);
+int gsl_histogram2d_find (const gsl_histogram2d * h,
+ const double x, const double y, size_t * i, size_t * j);
+
+double gsl_histogram2d_get (const gsl_histogram2d * h, const size_t i, const size_t j);
+int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i,
+ double * xlower, double * xupper);
+int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j,
+ double * ylower, double * yupper);
+
+
+double gsl_histogram2d_xmax (const gsl_histogram2d * h);
+double gsl_histogram2d_xmin (const gsl_histogram2d * h);
+size_t gsl_histogram2d_nx (const gsl_histogram2d * h);
+
+double gsl_histogram2d_ymax (const gsl_histogram2d * h);
+double gsl_histogram2d_ymin (const gsl_histogram2d * h);
+size_t gsl_histogram2d_ny (const gsl_histogram2d * h);
+
+void gsl_histogram2d_reset (gsl_histogram2d * h);
+
+gsl_histogram2d *
+gsl_histogram2d_calloc_range(size_t nx, size_t ny,
+ double *xrange, double *yrange);
+
+int
+gsl_histogram2d_set_ranges_uniform (gsl_histogram2d * h,
+ double xmin, double xmax,
+ double ymin, double ymax);
+
+int
+gsl_histogram2d_set_ranges (gsl_histogram2d * h,
+ const double xrange[], size_t xsize,
+ const double yrange[], size_t ysize);
+
+int
+gsl_histogram2d_memcpy(gsl_histogram2d *dest, const gsl_histogram2d *source);
+
+gsl_histogram2d *
+gsl_histogram2d_clone(const gsl_histogram2d * source);
+
+double
+gsl_histogram2d_max_val(const gsl_histogram2d *h);
+
+void
+gsl_histogram2d_max_bin (const gsl_histogram2d *h, size_t *i, size_t *j);
+
+double
+gsl_histogram2d_min_val(const gsl_histogram2d *h);
+
+void
+gsl_histogram2d_min_bin (const gsl_histogram2d *h, size_t *i, size_t *j);
+
+double
+gsl_histogram2d_xmean (const gsl_histogram2d * h);
+
+double
+gsl_histogram2d_ymean (const gsl_histogram2d * h);
+
+double
+gsl_histogram2d_xsigma (const gsl_histogram2d * h);
+
+double
+gsl_histogram2d_ysigma (const gsl_histogram2d * h);
+
+double
+gsl_histogram2d_cov (const gsl_histogram2d * h);
+
+double
+gsl_histogram2d_sum (const gsl_histogram2d *h);
+
+int
+gsl_histogram2d_equal_bins_p(const gsl_histogram2d *h1,
+ const gsl_histogram2d *h2) ;
+
+int
+gsl_histogram2d_add(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+
+int
+gsl_histogram2d_sub(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+
+int
+gsl_histogram2d_mul(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+
+int
+gsl_histogram2d_div(gsl_histogram2d *h1, const gsl_histogram2d *h2);
+
+int
+gsl_histogram2d_scale(gsl_histogram2d *h, double scale);
+
+int
+gsl_histogram2d_shift(gsl_histogram2d *h, double shift);
+
+int gsl_histogram2d_fwrite (FILE * stream, const gsl_histogram2d * h) ;
+int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h);
+int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h,
+ const char * range_format,
+ const char * bin_format);
+int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h);
+
+gsl_histogram2d_pdf * gsl_histogram2d_pdf_alloc (const size_t nx, const size_t ny);
+int gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * p, const gsl_histogram2d * h);
+void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p);
+int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p,
+ double r1, double r2,
+ double * x, double * y);
+
+__END_DECLS
+
+#endif /* __GSL_HISTOGRAM2D_H__ */
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_ieee_utils.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_ieee_utils.h
new file mode 100644
index 00000000..a9612207
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_ieee_utils.h
@@ -0,0 +1,99 @@
+/* ieee-utils/gsl_ieee_utils.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_IEEE_UTILS_H__
+#define __GSL_IEEE_UTILS_H__
+#include <stdio.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+enum {
+ GSL_IEEE_TYPE_NAN = 1,
+ GSL_IEEE_TYPE_INF = 2,
+ GSL_IEEE_TYPE_NORMAL = 3,
+ GSL_IEEE_TYPE_DENORMAL = 4,
+ GSL_IEEE_TYPE_ZERO = 5
+} ;
+
+typedef struct {
+ int sign ;
+ char mantissa[24] ; /* Actual bits are 0..22, element 23 is \0 */
+ int exponent ;
+ int type ;
+} gsl_ieee_float_rep ;
+
+typedef struct {
+ int sign ;
+ char mantissa[53] ; /* Actual bits are 0..51, element 52 is \0 */
+ int exponent ;
+ int type ;
+} gsl_ieee_double_rep ;
+
+
+void gsl_ieee_printf_float (const float * x) ;
+void gsl_ieee_printf_double (const double * x) ;
+
+void gsl_ieee_fprintf_float (FILE * stream, const float * x) ;
+void gsl_ieee_fprintf_double (FILE * stream, const double * x) ;
+
+void gsl_ieee_float_to_rep (const float * x, gsl_ieee_float_rep * r) ;
+void gsl_ieee_double_to_rep (const double * x, gsl_ieee_double_rep * r) ;
+
+enum {
+ GSL_IEEE_SINGLE_PRECISION = 1,
+ GSL_IEEE_DOUBLE_PRECISION = 2,
+ GSL_IEEE_EXTENDED_PRECISION = 3
+} ;
+
+enum {
+ GSL_IEEE_ROUND_TO_NEAREST = 1,
+ GSL_IEEE_ROUND_DOWN = 2,
+ GSL_IEEE_ROUND_UP = 3,
+ GSL_IEEE_ROUND_TO_ZERO = 4
+} ;
+
+enum {
+ GSL_IEEE_MASK_INVALID = 1,
+ GSL_IEEE_MASK_DENORMALIZED = 2,
+ GSL_IEEE_MASK_DIVISION_BY_ZERO = 4,
+ GSL_IEEE_MASK_OVERFLOW = 8,
+ GSL_IEEE_MASK_UNDERFLOW = 16,
+ GSL_IEEE_MASK_ALL = 31,
+ GSL_IEEE_TRAP_INEXACT = 32
+} ;
+
+void gsl_ieee_env_setup (void) ;
+int gsl_ieee_read_mode_string (const char * description, int * precision,
+ int * rounding, int * exception_mask) ;
+int gsl_ieee_set_mode (int precision, int rounding, int exception_mask) ;
+
+__END_DECLS
+
+#endif /* __GSL_IEEE_UTILS_H__ */
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_inline.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_inline.h
new file mode 100644
index 00000000..2172201a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_inline.h
@@ -0,0 +1,67 @@
+/* gsl_inline.h
+ *
+ * Copyright (C) 2008, 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_INLINE_H__
+#define __GSL_INLINE_H__
+
+/* In recent versiions of GCC, the inline keyword has two different
+ forms: GNU and C99.
+
+ In GNU mode we can use 'extern inline' to make inline functions
+ work like macros. The function is only inlined--it is never output
+ as a definition in an object file.
+
+ In the new C99 mode 'extern inline' has a different meaning--it
+ causes the definition of the function to be output in each object
+ file where it is used. This will result in multiple-definition
+ errors on linking. The 'inline' keyword on its own (without
+ extern) has the same behavior as the original GNU 'extern inline'.
+
+ The C99 style is the default with -std=c99 in GCC 4.3.
+
+ This header file allows either form of inline to be used by
+ redefining the macros INLINE_DECL and INLINE_FUN. These are used
+ in the public header files as
+
+ INLINE_DECL double gsl_foo (double x);
+ #ifdef HAVE_INLINE
+ INLINE_FUN double gsl_foo (double x) { return x+1.0; } ;
+ #endif
+
+*/
+
+#ifdef HAVE_INLINE
+# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
+# define INLINE_DECL inline /* use C99 inline */
+# define INLINE_FUN inline
+# else
+# define INLINE_DECL /* use GNU extern inline */
+# define INLINE_FUN extern inline
+# endif
+#else
+# define INLINE_DECL /* */
+#endif
+
+/* Range checking conditions in headers do not require any run-time
+ tests of the global variable gsl_check_range. They are enabled or
+ disabled in user code at compile time with GSL_RANGE_CHECK macro.
+ See also build.h. */
+#define GSL_RANGE_COND(x) (x)
+
+#endif /* __GSL_INLINE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_integration.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_integration.h
new file mode 100644
index 00000000..5972f49e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_integration.h
@@ -0,0 +1,323 @@
+/* integration/gsl_integration.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_INTEGRATION_H__
+#define __GSL_INTEGRATION_H__
+#include <stdlib.h>
+#include <gsl/gsl_math.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Workspace for adaptive integrators */
+
+typedef struct
+ {
+ size_t limit;
+ size_t size;
+ size_t nrmax;
+ size_t i;
+ size_t maximum_level;
+ double *alist;
+ double *blist;
+ double *rlist;
+ double *elist;
+ size_t *order;
+ size_t *level;
+ }
+gsl_integration_workspace;
+
+gsl_integration_workspace *
+ gsl_integration_workspace_alloc (const size_t n);
+
+void
+ gsl_integration_workspace_free (gsl_integration_workspace * w);
+
+
+/* Workspace for QAWS integrator */
+
+typedef struct
+{
+ double alpha;
+ double beta;
+ int mu;
+ int nu;
+ double ri[25];
+ double rj[25];
+ double rg[25];
+ double rh[25];
+}
+gsl_integration_qaws_table;
+
+gsl_integration_qaws_table *
+gsl_integration_qaws_table_alloc (double alpha, double beta, int mu, int nu);
+
+int
+gsl_integration_qaws_table_set (gsl_integration_qaws_table * t,
+ double alpha, double beta, int mu, int nu);
+
+void
+gsl_integration_qaws_table_free (gsl_integration_qaws_table * t);
+
+/* Workspace for QAWO integrator */
+
+enum gsl_integration_qawo_enum { GSL_INTEG_COSINE, GSL_INTEG_SINE };
+
+typedef struct
+{
+ size_t n;
+ double omega;
+ double L;
+ double par;
+ enum gsl_integration_qawo_enum sine;
+ double *chebmo;
+}
+gsl_integration_qawo_table;
+
+gsl_integration_qawo_table *
+gsl_integration_qawo_table_alloc (double omega, double L,
+ enum gsl_integration_qawo_enum sine,
+ size_t n);
+
+int
+gsl_integration_qawo_table_set (gsl_integration_qawo_table * t,
+ double omega, double L,
+ enum gsl_integration_qawo_enum sine);
+
+int
+gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t,
+ double L);
+
+void
+gsl_integration_qawo_table_free (gsl_integration_qawo_table * t);
+
+
+/* Definition of an integration rule */
+
+typedef void gsl_integration_rule (const gsl_function * f,
+ double a, double b,
+ double *result, double *abserr,
+ double *defabs, double *resabs);
+
+void gsl_integration_qk15 (const gsl_function * f, double a, double b,
+ double *result, double *abserr,
+ double *resabs, double *resasc);
+
+void gsl_integration_qk21 (const gsl_function * f, double a, double b,
+ double *result, double *abserr,
+ double *resabs, double *resasc);
+
+void gsl_integration_qk31 (const gsl_function * f, double a, double b,
+ double *result, double *abserr,
+ double *resabs, double *resasc);
+
+void gsl_integration_qk41 (const gsl_function * f, double a, double b,
+ double *result, double *abserr,
+ double *resabs, double *resasc);
+
+void gsl_integration_qk51 (const gsl_function * f, double a, double b,
+ double *result, double *abserr,
+ double *resabs, double *resasc);
+
+void gsl_integration_qk61 (const gsl_function * f, double a, double b,
+ double *result, double *abserr,
+ double *resabs, double *resasc);
+
+void gsl_integration_qcheb (gsl_function * f, double a, double b,
+ double *cheb12, double *cheb24);
+
+/* The low-level integration rules in QUADPACK are identified by small
+ integers (1-6). We'll use symbolic constants to refer to them. */
+
+enum
+ {
+ GSL_INTEG_GAUSS15 = 1, /* 15 point Gauss-Kronrod rule */
+ GSL_INTEG_GAUSS21 = 2, /* 21 point Gauss-Kronrod rule */
+ GSL_INTEG_GAUSS31 = 3, /* 31 point Gauss-Kronrod rule */
+ GSL_INTEG_GAUSS41 = 4, /* 41 point Gauss-Kronrod rule */
+ GSL_INTEG_GAUSS51 = 5, /* 51 point Gauss-Kronrod rule */
+ GSL_INTEG_GAUSS61 = 6 /* 61 point Gauss-Kronrod rule */
+ };
+
+void
+gsl_integration_qk (const int n, const double xgk[],
+ const double wg[], const double wgk[],
+ double fv1[], double fv2[],
+ const gsl_function *f, double a, double b,
+ double * result, double * abserr,
+ double * resabs, double * resasc);
+
+
+int gsl_integration_qng (const gsl_function * f,
+ double a, double b,
+ double epsabs, double epsrel,
+ double *result, double *abserr,
+ size_t * neval);
+
+int gsl_integration_qag (const gsl_function * f,
+ double a, double b,
+ double epsabs, double epsrel, size_t limit,
+ int key,
+ gsl_integration_workspace * workspace,
+ double *result, double *abserr);
+
+int gsl_integration_qagi (gsl_function * f,
+ double epsabs, double epsrel, size_t limit,
+ gsl_integration_workspace * workspace,
+ double *result, double *abserr);
+
+int gsl_integration_qagiu (gsl_function * f,
+ double a,
+ double epsabs, double epsrel, size_t limit,
+ gsl_integration_workspace * workspace,
+ double *result, double *abserr);
+
+int gsl_integration_qagil (gsl_function * f,
+ double b,
+ double epsabs, double epsrel, size_t limit,
+ gsl_integration_workspace * workspace,
+ double *result, double *abserr);
+
+
+int gsl_integration_qags (const gsl_function * f,
+ double a, double b,
+ double epsabs, double epsrel, size_t limit,
+ gsl_integration_workspace * workspace,
+ double *result, double *abserr);
+
+int gsl_integration_qagp (const gsl_function * f,
+ double *pts, size_t npts,
+ double epsabs, double epsrel, size_t limit,
+ gsl_integration_workspace * workspace,
+ double *result, double *abserr);
+
+int gsl_integration_qawc (gsl_function *f,
+ const double a, const double b, const double c,
+ const double epsabs, const double epsrel, const size_t limit,
+ gsl_integration_workspace * workspace,
+ double * result, double * abserr);
+
+int gsl_integration_qaws (gsl_function * f,
+ const double a, const double b,
+ gsl_integration_qaws_table * t,
+ const double epsabs, const double epsrel,
+ const size_t limit,
+ gsl_integration_workspace * workspace,
+ double *result, double *abserr);
+
+int gsl_integration_qawo (gsl_function * f,
+ const double a,
+ const double epsabs, const double epsrel,
+ const size_t limit,
+ gsl_integration_workspace * workspace,
+ gsl_integration_qawo_table * wf,
+ double *result, double *abserr);
+
+int gsl_integration_qawf (gsl_function * f,
+ const double a,
+ const double epsabs,
+ const size_t limit,
+ gsl_integration_workspace * workspace,
+ gsl_integration_workspace * cycle_workspace,
+ gsl_integration_qawo_table * wf,
+ double *result, double *abserr);
+
+/* Workspace for fixed-order Gauss-Legendre integration */
+
+typedef struct
+ {
+ size_t n; /* number of points */
+ double *x; /* Gauss abscissae/points */
+ double *w; /* Gauss weights for each abscissae */
+ int precomputed; /* high precision abscissae/weights precomputed? */
+ }
+gsl_integration_glfixed_table;
+
+
+gsl_integration_glfixed_table *
+ gsl_integration_glfixed_table_alloc (size_t n);
+
+void
+ gsl_integration_glfixed_table_free (gsl_integration_glfixed_table * t);
+
+/* Routine for fixed-order Gauss-Legendre integration */
+
+double
+ gsl_integration_glfixed (const gsl_function *f,
+ double a,
+ double b,
+ const gsl_integration_glfixed_table * t);
+
+/* Routine to retrieve the i-th Gauss-Legendre point and weight from t */
+
+int
+ gsl_integration_glfixed_point (double a,
+ double b,
+ size_t i,
+ double *xi,
+ double *wi,
+ const gsl_integration_glfixed_table * t);
+
+
+/* Cquad integration - Pedro Gonnet */
+
+/* Data of a single interval */
+typedef struct
+{
+ double a, b;
+ double c[64];
+ double fx[33];
+ double igral, err;
+ int depth, rdepth, ndiv;
+} gsl_integration_cquad_ival;
+
+
+/* The workspace is just a collection of intervals */
+typedef struct
+{
+ size_t size;
+ gsl_integration_cquad_ival *ivals;
+ size_t *heap;
+} gsl_integration_cquad_workspace;
+
+gsl_integration_cquad_workspace *
+gsl_integration_cquad_workspace_alloc (const size_t n);
+
+void
+gsl_integration_cquad_workspace_free (gsl_integration_cquad_workspace * w);
+
+int
+gsl_integration_cquad (const gsl_function * f, double a, double b,
+ double epsabs, double epsrel,
+ gsl_integration_cquad_workspace * ws,
+ double *result, double *abserr, size_t * nevals);
+
+
+__END_DECLS
+
+#endif /* __GSL_INTEGRATION_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_interp.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_interp.h
new file mode 100644
index 00000000..8321224a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_interp.h
@@ -0,0 +1,225 @@
+/* interpolation/gsl_interp.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman
+ */
+#ifndef __GSL_INTERP_H__
+#define __GSL_INTERP_H__
+#include <stdlib.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* evaluation accelerator */
+typedef struct {
+ size_t cache; /* cache of index */
+ size_t miss_count; /* keep statistics */
+ size_t hit_count;
+}
+gsl_interp_accel;
+
+
+/* interpolation object type */
+typedef struct {
+ const char * name;
+ unsigned int min_size;
+ void * (*alloc) (size_t size);
+ int (*init) (void *, const double xa[], const double ya[], size_t size);
+ int (*eval) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y);
+ int (*eval_deriv) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_p);
+ int (*eval_deriv2) (const void *, const double xa[], const double ya[], size_t size, double x, gsl_interp_accel *, double * y_pp);
+ int (*eval_integ) (const void *, const double xa[], const double ya[], size_t size, gsl_interp_accel *, double a, double b, double * result);
+ void (*free) (void *);
+
+} gsl_interp_type;
+
+
+/* general interpolation object */
+typedef struct {
+ const gsl_interp_type * type;
+ double xmin;
+ double xmax;
+ size_t size;
+ void * state;
+} gsl_interp;
+
+
+/* available types */
+GSL_VAR const gsl_interp_type * gsl_interp_linear;
+GSL_VAR const gsl_interp_type * gsl_interp_polynomial;
+GSL_VAR const gsl_interp_type * gsl_interp_cspline;
+GSL_VAR const gsl_interp_type * gsl_interp_cspline_periodic;
+GSL_VAR const gsl_interp_type * gsl_interp_akima;
+GSL_VAR const gsl_interp_type * gsl_interp_akima_periodic;
+GSL_VAR const gsl_interp_type * gsl_interp_steffen;
+
+gsl_interp_accel *
+gsl_interp_accel_alloc(void);
+
+int
+gsl_interp_accel_reset (gsl_interp_accel * a);
+
+void
+gsl_interp_accel_free(gsl_interp_accel * a);
+
+gsl_interp *
+gsl_interp_alloc(const gsl_interp_type * T, size_t n);
+
+int
+gsl_interp_init(gsl_interp * obj, const double xa[], const double ya[], size_t size);
+
+const char * gsl_interp_name(const gsl_interp * interp);
+unsigned int gsl_interp_min_size(const gsl_interp * interp);
+unsigned int gsl_interp_type_min_size(const gsl_interp_type * T);
+
+
+int
+gsl_interp_eval_e(const gsl_interp * obj,
+ const double xa[], const double ya[], double x,
+ gsl_interp_accel * a, double * y);
+
+double
+gsl_interp_eval(const gsl_interp * obj,
+ const double xa[], const double ya[], double x,
+ gsl_interp_accel * a);
+
+int
+gsl_interp_eval_deriv_e(const gsl_interp * obj,
+ const double xa[], const double ya[], double x,
+ gsl_interp_accel * a,
+ double * d);
+
+double
+gsl_interp_eval_deriv(const gsl_interp * obj,
+ const double xa[], const double ya[], double x,
+ gsl_interp_accel * a);
+
+int
+gsl_interp_eval_deriv2_e(const gsl_interp * obj,
+ const double xa[], const double ya[], double x,
+ gsl_interp_accel * a,
+ double * d2);
+
+double
+gsl_interp_eval_deriv2(const gsl_interp * obj,
+ const double xa[], const double ya[], double x,
+ gsl_interp_accel * a);
+
+int
+gsl_interp_eval_integ_e(const gsl_interp * obj,
+ const double xa[], const double ya[],
+ double a, double b,
+ gsl_interp_accel * acc,
+ double * result);
+
+double
+gsl_interp_eval_integ(const gsl_interp * obj,
+ const double xa[], const double ya[],
+ double a, double b,
+ gsl_interp_accel * acc);
+
+void
+gsl_interp_free(gsl_interp * interp);
+
+INLINE_DECL size_t
+gsl_interp_bsearch(const double x_array[], double x,
+ size_t index_lo, size_t index_hi);
+
+#ifdef HAVE_INLINE
+
+/* Perform a binary search of an array of values.
+ *
+ * The parameters index_lo and index_hi provide an initial bracket,
+ * and it is assumed that index_lo < index_hi. The resulting index
+ * is guaranteed to be strictly less than index_hi and greater than
+ * or equal to index_lo, so that the implicit bracket [index, index+1]
+ * always corresponds to a region within the implicit value range of
+ * the value array.
+ *
+ * Note that this means the relationship of 'x' to x_array[index]
+ * and x_array[index+1] depends on the result region, i.e. the
+ * behaviour at the boundaries may not correspond to what you
+ * expect. We have the following complete specification of the
+ * behaviour.
+ * Suppose the input is x_array[] = { x0, x1, ..., xN }
+ * if ( x == x0 ) then index == 0
+ * if ( x > x0 && x <= x1 ) then index == 0, and sim. for other interior pts
+ * if ( x == xN ) then index == N-1
+ * if ( x > xN ) then index == N-1
+ * if ( x < x0 ) then index == 0
+ */
+
+INLINE_FUN size_t
+gsl_interp_bsearch(const double x_array[], double x,
+ size_t index_lo, size_t index_hi)
+{
+ size_t ilo = index_lo;
+ size_t ihi = index_hi;
+ while(ihi > ilo + 1) {
+ size_t i = (ihi + ilo)/2;
+ if(x_array[i] > x)
+ ihi = i;
+ else
+ ilo = i;
+ }
+
+ return ilo;
+}
+#endif
+
+INLINE_DECL size_t
+gsl_interp_accel_find(gsl_interp_accel * a, const double x_array[], size_t size, double x);
+
+#ifdef HAVE_INLINE
+INLINE_FUN size_t
+gsl_interp_accel_find(gsl_interp_accel * a, const double xa[], size_t len, double x)
+{
+ size_t x_index = a->cache;
+
+ if(x < xa[x_index]) {
+ a->miss_count++;
+ a->cache = gsl_interp_bsearch(xa, x, 0, x_index);
+ }
+ else if(x >= xa[x_index + 1]) {
+ a->miss_count++;
+ a->cache = gsl_interp_bsearch(xa, x, x_index, len-1);
+ }
+ else {
+ a->hit_count++;
+ }
+
+ return a->cache;
+}
+#endif /* HAVE_INLINE */
+
+
+__END_DECLS
+
+#endif /* __GSL_INTERP_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_interp2d.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_interp2d.h
new file mode 100644
index 00000000..e105fa31
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_interp2d.h
@@ -0,0 +1,160 @@
+/* interpolation/gsl_interp2d.h
+ *
+ * Copyright 2012 David Zaslavsky
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_INTERP2D_H__
+#define __GSL_INTERP2D_H__
+
+#include <gsl/gsl_interp.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct {
+ const char* name;
+ unsigned int min_size;
+ void * (*alloc)(size_t xsize, size_t ysize);
+ int (*init)(void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize);
+ int (*eval)(const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z);
+ int (*eval_deriv_x) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_p);
+ int (*eval_deriv_y) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_p);
+ int (*eval_deriv_xx) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_pp);
+ int (*eval_deriv_xy) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_pp);
+ int (*eval_deriv_yy) (const void *, const double xa[], const double ya[], const double za[], size_t xsize, size_t ysize, double x, double y, gsl_interp_accel*, gsl_interp_accel*, double* z_pp);
+ void (*free)(void *);
+} gsl_interp2d_type;
+
+typedef struct {
+ const gsl_interp2d_type * type; /* interpolation type */
+ double xmin; /* minimum value of x for which data have been provided */
+ double xmax; /* maximum value of x for which data have been provided */
+ double ymin; /* minimum value of y for which data have been provided */
+ double ymax; /* maximum value of y for which data have been provided */
+ size_t xsize; /* number of x values provided */
+ size_t ysize; /* number of y values provided */
+ void * state; /* internal state object specific to the interpolation type */
+} gsl_interp2d;
+
+/* available types */
+GSL_VAR const gsl_interp2d_type * gsl_interp2d_bilinear;
+GSL_VAR const gsl_interp2d_type * gsl_interp2d_bicubic;
+
+gsl_interp2d * gsl_interp2d_alloc(const gsl_interp2d_type * T, const size_t xsize,
+ const size_t ysize);
+
+const char * gsl_interp2d_name(const gsl_interp2d * interp);
+size_t gsl_interp2d_min_size(const gsl_interp2d * interp);
+size_t gsl_interp2d_type_min_size(const gsl_interp2d_type * T);
+int gsl_interp2d_set(const gsl_interp2d * interp, double zarr[],
+ const size_t i, const size_t j, const double z);
+double gsl_interp2d_get(const gsl_interp2d * interp, const double zarr[],
+ const size_t i, const size_t j);
+size_t gsl_interp2d_idx(const gsl_interp2d * interp,
+ const size_t i, const size_t j);
+int gsl_interp2d_init(gsl_interp2d * interp, const double xa[], const double ya[],
+ const double za[], const size_t xsize, const size_t ysize);
+void gsl_interp2d_free(gsl_interp2d * interp);
+
+double gsl_interp2d_eval(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[], const double x,
+ const double y, gsl_interp_accel * xa, gsl_interp_accel * ya);
+
+double gsl_interp2d_eval_extrap(const gsl_interp2d * interp,
+ const double xarr[], const double yarr[],
+ const double zarr[], const double x,
+ const double y, gsl_interp_accel * xa,
+ gsl_interp_accel * ya);
+
+int gsl_interp2d_eval_e(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y, gsl_interp_accel* xa,
+ gsl_interp_accel* ya, double * z);
+
+int gsl_interp2d_eval_e_extrap(const gsl_interp2d * interp,
+ const double xarr[],
+ const double yarr[],
+ const double zarr[],
+ const double x,
+ const double y,
+ gsl_interp_accel * xa,
+ gsl_interp_accel * ya,
+ double * z);
+
+double gsl_interp2d_eval_deriv_x(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y, gsl_interp_accel * xa,
+ gsl_interp_accel * ya);
+
+int gsl_interp2d_eval_deriv_x_e(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya, double * z);
+
+double gsl_interp2d_eval_deriv_y(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel* xa, gsl_interp_accel* ya);
+
+int gsl_interp2d_eval_deriv_y_e(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya, double * z);
+
+double gsl_interp2d_eval_deriv_xx(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya);
+
+int gsl_interp2d_eval_deriv_xx_e(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya, double * z);
+
+double gsl_interp2d_eval_deriv_yy(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya);
+
+int gsl_interp2d_eval_deriv_yy_e(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya, double * z);
+
+double gsl_interp2d_eval_deriv_xy(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya);
+
+int gsl_interp2d_eval_deriv_xy_e(const gsl_interp2d * interp, const double xarr[],
+ const double yarr[], const double zarr[],
+ const double x, const double y,
+ gsl_interp_accel * xa, gsl_interp_accel * ya, double * z);
+
+
+__END_DECLS
+
+#endif /* __GSL_INTERP2D_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_linalg.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_linalg.h
new file mode 100644
index 00000000..ac3e6433
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_linalg.h
@@ -0,0 +1,650 @@
+/* linalg/gsl_linalg.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006, 2007 Gerard Jungman, Brian Gough, Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_LINALG_H__
+#define __GSL_LINALG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_mode.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_inline.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+#else
+#define __BEGIN_DECLS /* empty */
+#define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef enum
+ {
+ GSL_LINALG_MOD_NONE = 0,
+ GSL_LINALG_MOD_TRANSPOSE = 1,
+ GSL_LINALG_MOD_CONJUGATE = 2
+ }
+gsl_linalg_matrix_mod_t;
+
+
+/* Note: You can now use the gsl_blas_dgemm function instead of matmult */
+
+/* Simple implementation of matrix multiply.
+ * Calculates C = A.B
+ *
+ * exceptions: GSL_EBADLEN
+ */
+int gsl_linalg_matmult (const gsl_matrix * A,
+ const gsl_matrix * B,
+ gsl_matrix * C);
+
+
+/* Simple implementation of matrix multiply.
+ * Allows transposition of either matrix, so it
+ * can compute A.B or Trans(A).B or A.Trans(B) or Trans(A).Trans(B)
+ *
+ * exceptions: GSL_EBADLEN
+ */
+int gsl_linalg_matmult_mod (const gsl_matrix * A,
+ gsl_linalg_matrix_mod_t modA,
+ const gsl_matrix * B,
+ gsl_linalg_matrix_mod_t modB,
+ gsl_matrix * C);
+
+/* Calculate the matrix exponential by the scaling and
+ * squaring method described in Moler + Van Loan,
+ * SIAM Rev 20, 801 (1978). The mode argument allows
+ * choosing an optimal strategy, from the table
+ * given in the paper, for a given precision.
+ *
+ * exceptions: GSL_ENOTSQR, GSL_EBADLEN
+ */
+int gsl_linalg_exponential_ss(
+ const gsl_matrix * A,
+ gsl_matrix * eA,
+ gsl_mode_t mode
+ );
+
+
+/* Householder Transformations */
+
+double gsl_linalg_householder_transform (gsl_vector * v);
+gsl_complex gsl_linalg_complex_householder_transform (gsl_vector_complex * v);
+
+int gsl_linalg_householder_hm (double tau,
+ const gsl_vector * v,
+ gsl_matrix * A);
+
+int gsl_linalg_householder_mh (double tau,
+ const gsl_vector * v,
+ gsl_matrix * A);
+
+int gsl_linalg_householder_hv (double tau,
+ const gsl_vector * v,
+ gsl_vector * w);
+
+int gsl_linalg_householder_hm1 (double tau,
+ gsl_matrix * A);
+
+int gsl_linalg_complex_householder_hm (gsl_complex tau,
+ const gsl_vector_complex * v,
+ gsl_matrix_complex * A);
+
+int gsl_linalg_complex_householder_mh (gsl_complex tau,
+ const gsl_vector_complex * v,
+ gsl_matrix_complex * A);
+
+int gsl_linalg_complex_householder_hv (gsl_complex tau,
+ const gsl_vector_complex * v,
+ gsl_vector_complex * w);
+
+/* Hessenberg reduction */
+
+int gsl_linalg_hessenberg_decomp(gsl_matrix *A, gsl_vector *tau);
+int gsl_linalg_hessenberg_unpack(gsl_matrix * H, gsl_vector * tau,
+ gsl_matrix * U);
+int gsl_linalg_hessenberg_unpack_accum(gsl_matrix * H, gsl_vector * tau,
+ gsl_matrix * U);
+int gsl_linalg_hessenberg_set_zero(gsl_matrix * H);
+int gsl_linalg_hessenberg_submatrix(gsl_matrix *M, gsl_matrix *A,
+ size_t top, gsl_vector *tau);
+
+/* To support gsl-1.9 interface: DEPRECATED */
+int gsl_linalg_hessenberg(gsl_matrix *A, gsl_vector *tau);
+
+
+/* Hessenberg-Triangular reduction */
+
+int gsl_linalg_hesstri_decomp(gsl_matrix * A, gsl_matrix * B,
+ gsl_matrix * U, gsl_matrix * V,
+ gsl_vector * work);
+
+/* Singular Value Decomposition
+
+ * exceptions:
+ */
+
+int
+gsl_linalg_SV_decomp (gsl_matrix * A,
+ gsl_matrix * V,
+ gsl_vector * S,
+ gsl_vector * work);
+
+int
+gsl_linalg_SV_decomp_mod (gsl_matrix * A,
+ gsl_matrix * X,
+ gsl_matrix * V,
+ gsl_vector * S,
+ gsl_vector * work);
+
+int gsl_linalg_SV_decomp_jacobi (gsl_matrix * A,
+ gsl_matrix * Q,
+ gsl_vector * S);
+
+int
+gsl_linalg_SV_solve (const gsl_matrix * U,
+ const gsl_matrix * Q,
+ const gsl_vector * S,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_SV_leverage(const gsl_matrix *U, gsl_vector *h);
+
+
+/* LU Decomposition, Gaussian elimination with partial pivoting
+ */
+
+int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation * p, int *signum);
+
+int gsl_linalg_LU_solve (const gsl_matrix * LU,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_LU_svx (const gsl_matrix * LU,
+ const gsl_permutation * p,
+ gsl_vector * x);
+
+int gsl_linalg_LU_refine (const gsl_matrix * A,
+ const gsl_matrix * LU,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x,
+ gsl_vector * residual);
+
+int gsl_linalg_LU_invert (const gsl_matrix * LU,
+ const gsl_permutation * p,
+ gsl_matrix * inverse);
+
+double gsl_linalg_LU_det (gsl_matrix * LU, int signum);
+double gsl_linalg_LU_lndet (gsl_matrix * LU);
+int gsl_linalg_LU_sgndet (gsl_matrix * lu, int signum);
+
+/* Complex LU Decomposition */
+
+int gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A,
+ gsl_permutation * p,
+ int *signum);
+
+int gsl_linalg_complex_LU_solve (const gsl_matrix_complex * LU,
+ const gsl_permutation * p,
+ const gsl_vector_complex * b,
+ gsl_vector_complex * x);
+
+int gsl_linalg_complex_LU_svx (const gsl_matrix_complex * LU,
+ const gsl_permutation * p,
+ gsl_vector_complex * x);
+
+int gsl_linalg_complex_LU_refine (const gsl_matrix_complex * A,
+ const gsl_matrix_complex * LU,
+ const gsl_permutation * p,
+ const gsl_vector_complex * b,
+ gsl_vector_complex * x,
+ gsl_vector_complex * residual);
+
+int gsl_linalg_complex_LU_invert (const gsl_matrix_complex * LU,
+ const gsl_permutation * p,
+ gsl_matrix_complex * inverse);
+
+gsl_complex gsl_linalg_complex_LU_det (gsl_matrix_complex * LU,
+ int signum);
+
+double gsl_linalg_complex_LU_lndet (gsl_matrix_complex * LU);
+
+gsl_complex gsl_linalg_complex_LU_sgndet (gsl_matrix_complex * LU,
+ int signum);
+
+/* QR decomposition */
+
+int gsl_linalg_QR_decomp (gsl_matrix * A,
+ gsl_vector * tau);
+
+int gsl_linalg_QR_solve (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_QR_svx (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ gsl_vector * x);
+
+int gsl_linalg_QR_lssolve (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ const gsl_vector * b,
+ gsl_vector * x,
+ gsl_vector * residual);
+
+
+int gsl_linalg_QR_QRsolve (gsl_matrix * Q,
+ gsl_matrix * R,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_QR_Rsolve (const gsl_matrix * QR,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_QR_Rsvx (const gsl_matrix * QR,
+ gsl_vector * x);
+
+int gsl_linalg_QR_update (gsl_matrix * Q,
+ gsl_matrix * R,
+ gsl_vector * w,
+ const gsl_vector * v);
+
+int gsl_linalg_QR_QTvec (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ gsl_vector * v);
+
+int gsl_linalg_QR_Qvec (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ gsl_vector * v);
+
+int gsl_linalg_QR_QTmat (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ gsl_matrix * A);
+
+int gsl_linalg_QR_matQ (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ gsl_matrix * A);
+
+int gsl_linalg_QR_unpack (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ gsl_matrix * Q,
+ gsl_matrix * R);
+
+int gsl_linalg_R_solve (const gsl_matrix * R,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_R_svx (const gsl_matrix * R,
+ gsl_vector * x);
+
+
+/* Q R P^T decomposition */
+
+int gsl_linalg_QRPT_decomp (gsl_matrix * A,
+ gsl_vector * tau,
+ gsl_permutation * p,
+ int *signum,
+ gsl_vector * norm);
+
+int gsl_linalg_QRPT_decomp2 (const gsl_matrix * A,
+ gsl_matrix * q, gsl_matrix * r,
+ gsl_vector * tau,
+ gsl_permutation * p,
+ int *signum,
+ gsl_vector * norm);
+
+int gsl_linalg_QRPT_solve (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+
+int gsl_linalg_QRPT_svx (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ const gsl_permutation * p,
+ gsl_vector * x);
+
+int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q,
+ const gsl_matrix * R,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR,
+ const gsl_permutation * p,
+ gsl_vector * x);
+
+int gsl_linalg_QRPT_update (gsl_matrix * Q,
+ gsl_matrix * R,
+ const gsl_permutation * p,
+ gsl_vector * u,
+ const gsl_vector * v);
+
+/* LQ decomposition */
+
+int gsl_linalg_LQ_decomp (gsl_matrix * A, gsl_vector * tau);
+
+int gsl_linalg_LQ_solve_T (const gsl_matrix * LQ, const gsl_vector * tau,
+ const gsl_vector * b, gsl_vector * x);
+
+int gsl_linalg_LQ_svx_T (const gsl_matrix * LQ, const gsl_vector * tau,
+ gsl_vector * x);
+
+int gsl_linalg_LQ_lssolve_T (const gsl_matrix * LQ, const gsl_vector * tau,
+ const gsl_vector * b, gsl_vector * x,
+ gsl_vector * residual);
+
+int gsl_linalg_LQ_Lsolve_T (const gsl_matrix * LQ, const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_LQ_Lsvx_T (const gsl_matrix * LQ, gsl_vector * x);
+
+int gsl_linalg_L_solve_T (const gsl_matrix * L, const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_LQ_vecQ (const gsl_matrix * LQ, const gsl_vector * tau,
+ gsl_vector * v);
+
+int gsl_linalg_LQ_vecQT (const gsl_matrix * LQ, const gsl_vector * tau,
+ gsl_vector * v);
+
+int gsl_linalg_LQ_unpack (const gsl_matrix * LQ, const gsl_vector * tau,
+ gsl_matrix * Q, gsl_matrix * L);
+
+int gsl_linalg_LQ_update (gsl_matrix * Q, gsl_matrix * R,
+ const gsl_vector * v, gsl_vector * w);
+int gsl_linalg_LQ_LQsolve (gsl_matrix * Q, gsl_matrix * L,
+ const gsl_vector * b, gsl_vector * x);
+
+/* P^T L Q decomposition */
+
+int gsl_linalg_PTLQ_decomp (gsl_matrix * A, gsl_vector * tau,
+ gsl_permutation * p, int *signum,
+ gsl_vector * norm);
+
+int gsl_linalg_PTLQ_decomp2 (const gsl_matrix * A, gsl_matrix * q,
+ gsl_matrix * r, gsl_vector * tau,
+ gsl_permutation * p, int *signum,
+ gsl_vector * norm);
+
+int gsl_linalg_PTLQ_solve_T (const gsl_matrix * QR,
+ const gsl_vector * tau,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_PTLQ_svx_T (const gsl_matrix * LQ,
+ const gsl_vector * tau,
+ const gsl_permutation * p,
+ gsl_vector * x);
+
+int gsl_linalg_PTLQ_LQsolve_T (const gsl_matrix * Q, const gsl_matrix * L,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_PTLQ_Lsolve_T (const gsl_matrix * LQ,
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_PTLQ_Lsvx_T (const gsl_matrix * LQ,
+ const gsl_permutation * p,
+ gsl_vector * x);
+
+int gsl_linalg_PTLQ_update (gsl_matrix * Q, gsl_matrix * L,
+ const gsl_permutation * p,
+ const gsl_vector * v, gsl_vector * w);
+
+/* Cholesky Decomposition */
+
+int gsl_linalg_cholesky_decomp (gsl_matrix * A);
+
+int gsl_linalg_cholesky_solve (const gsl_matrix * cholesky,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+int gsl_linalg_cholesky_svx (const gsl_matrix * cholesky,
+ gsl_vector * x);
+
+int gsl_linalg_cholesky_invert(gsl_matrix * cholesky);
+
+/* Cholesky decomposition with unit-diagonal triangular parts.
+ * A = L D L^T, where diag(L) = (1,1,...,1).
+ * Upon exit, A contains L and L^T as for Cholesky, and
+ * the diagonal of A is (1,1,...,1). The vector Dis set
+ * to the diagonal elements of the diagonal matrix D.
+ */
+int gsl_linalg_cholesky_decomp_unit(gsl_matrix * A, gsl_vector * D);
+
+/* Complex Cholesky Decomposition */
+
+int gsl_linalg_complex_cholesky_decomp (gsl_matrix_complex * A);
+
+int gsl_linalg_complex_cholesky_solve (const gsl_matrix_complex * cholesky,
+ const gsl_vector_complex * b,
+ gsl_vector_complex * x);
+
+int gsl_linalg_complex_cholesky_svx (const gsl_matrix_complex * cholesky,
+ gsl_vector_complex * x);
+
+int gsl_linalg_complex_cholesky_invert(gsl_matrix_complex * cholesky);
+
+
+/* Symmetric to symmetric tridiagonal decomposition */
+
+int gsl_linalg_symmtd_decomp (gsl_matrix * A,
+ gsl_vector * tau);
+
+int gsl_linalg_symmtd_unpack (const gsl_matrix * A,
+ const gsl_vector * tau,
+ gsl_matrix * Q,
+ gsl_vector * diag,
+ gsl_vector * subdiag);
+
+int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A,
+ gsl_vector * diag,
+ gsl_vector * subdiag);
+
+/* Hermitian to symmetric tridiagonal decomposition */
+
+int gsl_linalg_hermtd_decomp (gsl_matrix_complex * A,
+ gsl_vector_complex * tau);
+
+int gsl_linalg_hermtd_unpack (const gsl_matrix_complex * A,
+ const gsl_vector_complex * tau,
+ gsl_matrix_complex * U,
+ gsl_vector * diag,
+ gsl_vector * sudiag);
+
+int gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex * A,
+ gsl_vector * diag,
+ gsl_vector * subdiag);
+
+/* Linear Solve Using Householder Transformations
+
+ * exceptions:
+ */
+
+int gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector * b, gsl_vector * x);
+int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * x);
+
+/* Linear solve for a symmetric tridiagonal system.
+
+ * The input vectors represent the NxN matrix as follows:
+ *
+ * diag[0] offdiag[0] 0 ...
+ * offdiag[0] diag[1] offdiag[1] ...
+ * 0 offdiag[1] diag[2] ...
+ * 0 0 offdiag[2] ...
+ * ... ... ... ...
+ */
+int gsl_linalg_solve_symm_tridiag (const gsl_vector * diag,
+ const gsl_vector * offdiag,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+/* Linear solve for a nonsymmetric tridiagonal system.
+
+ * The input vectors represent the NxN matrix as follows:
+ *
+ * diag[0] abovediag[0] 0 ...
+ * belowdiag[0] diag[1] abovediag[1] ...
+ * 0 belowdiag[1] diag[2] ...
+ * 0 0 belowdiag[2] ...
+ * ... ... ... ...
+ */
+int gsl_linalg_solve_tridiag (const gsl_vector * diag,
+ const gsl_vector * abovediag,
+ const gsl_vector * belowdiag,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+
+/* Linear solve for a symmetric cyclic tridiagonal system.
+
+ * The input vectors represent the NxN matrix as follows:
+ *
+ * diag[0] offdiag[0] 0 ..... offdiag[N-1]
+ * offdiag[0] diag[1] offdiag[1] .....
+ * 0 offdiag[1] diag[2] .....
+ * 0 0 offdiag[2] .....
+ * ... ...
+ * offdiag[N-1] ...
+ */
+int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * diag,
+ const gsl_vector * offdiag,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+/* Linear solve for a nonsymmetric cyclic tridiagonal system.
+
+ * The input vectors represent the NxN matrix as follows:
+ *
+ * diag[0] abovediag[0] 0 ..... belowdiag[N-1]
+ * belowdiag[0] diag[1] abovediag[1] .....
+ * 0 belowdiag[1] diag[2]
+ * 0 0 belowdiag[2] .....
+ * ... ...
+ * abovediag[N-1] ...
+ */
+int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag,
+ const gsl_vector * abovediag,
+ const gsl_vector * belowdiag,
+ const gsl_vector * b,
+ gsl_vector * x);
+
+
+/* Bidiagonal decomposition */
+
+int gsl_linalg_bidiag_decomp (gsl_matrix * A,
+ gsl_vector * tau_U,
+ gsl_vector * tau_V);
+
+int gsl_linalg_bidiag_unpack (const gsl_matrix * A,
+ const gsl_vector * tau_U,
+ gsl_matrix * U,
+ const gsl_vector * tau_V,
+ gsl_matrix * V,
+ gsl_vector * diag,
+ gsl_vector * superdiag);
+
+int gsl_linalg_bidiag_unpack2 (gsl_matrix * A,
+ gsl_vector * tau_U,
+ gsl_vector * tau_V,
+ gsl_matrix * V);
+
+int gsl_linalg_bidiag_unpack_B (const gsl_matrix * A,
+ gsl_vector * diag,
+ gsl_vector * superdiag);
+
+/* Balancing */
+
+int gsl_linalg_balance_matrix (gsl_matrix * A, gsl_vector * D);
+int gsl_linalg_balance_accum (gsl_matrix * A, gsl_vector * D);
+int gsl_linalg_balance_columns (gsl_matrix * A, gsl_vector * D);
+
+INLINE_DECL void gsl_linalg_givens (const double a, const double b,
+ double *c, double *s);
+INLINE_DECL void gsl_linalg_givens_gv (gsl_vector * v, const size_t i,
+ const size_t j, const double c,
+ const double s);
+
+#ifdef HAVE_INLINE
+
+/* Generate a Givens rotation (cos,sin) which takes v=(x,y) to (|v|,0)
+ From Golub and Van Loan, "Matrix Computations", Section 5.1.8 */
+INLINE_FUN
+void
+gsl_linalg_givens (const double a, const double b, double *c, double *s)
+{
+ if (b == 0)
+ {
+ *c = 1;
+ *s = 0;
+ }
+ else if (fabs (b) > fabs (a))
+ {
+ double t = -a / b;
+ double s1 = 1.0 / sqrt (1 + t * t);
+ *s = s1;
+ *c = s1 * t;
+ }
+ else
+ {
+ double t = -b / a;
+ double c1 = 1.0 / sqrt (1 + t * t);
+ *c = c1;
+ *s = c1 * t;
+ }
+} /* gsl_linalg_givens() */
+
+INLINE_FUN
+void
+gsl_linalg_givens_gv (gsl_vector * v, const size_t i, const size_t j,
+ const double c, const double s)
+{
+ /* Apply rotation to vector v' = G^T v */
+
+ double vi = gsl_vector_get (v, i);
+ double vj = gsl_vector_get (v, j);
+ gsl_vector_set (v, i, c * vi - s * vj);
+ gsl_vector_set (v, j, s * vi + c * vj);
+}
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_LINALG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_machine.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_machine.h
new file mode 100644
index 00000000..c44ffc2a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_machine.h
@@ -0,0 +1,104 @@
+/* Author: B. Gough and G. Jungman */
+#ifndef __GSL_MACHINE_H__
+#define __GSL_MACHINE_H__
+
+#include <limits.h>
+#include <float.h>
+
+/* magic constants; mostly for the benefit of the implementation */
+
+/* -*-MACHINE CONSTANTS-*-
+ *
+ * PLATFORM: Whiz-O-Matic 9000
+ * FP_PLATFORM: IEEE-Virtual
+ * HOSTNAME: nnn.lanl.gov
+ * DATE: Fri Nov 20 17:53:26 MST 1998
+ */
+#define GSL_DBL_EPSILON 2.2204460492503131e-16
+#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
+#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
+#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
+#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
+#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
+#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
+
+#define GSL_DBL_MIN 2.2250738585072014e-308
+#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
+#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
+#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
+#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
+#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
+#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
+
+#define GSL_DBL_MAX 1.7976931348623157e+308
+#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
+#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
+#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
+#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
+#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
+#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
+
+#define GSL_FLT_EPSILON 1.1920928955078125e-07
+#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
+#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
+#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
+#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
+#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
+#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
+
+#define GSL_FLT_MIN 1.1754943508222875e-38
+#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
+#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
+#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
+#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
+#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
+#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
+
+#define GSL_FLT_MAX 3.4028234663852886e+38
+#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
+#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
+#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
+#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
+#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
+#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
+
+#define GSL_SFLT_EPSILON 4.8828125000000000e-04
+#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
+#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
+#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
+#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
+#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
+#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
+
+/* !MACHINE CONSTANTS! */
+
+
+/* a little internal backwards compatibility */
+#define GSL_MACH_EPS GSL_DBL_EPSILON
+
+
+
+/* Here are the constants related to or derived from
+ * machine constants. These are not to be confused with
+ * the constants that define various precision levels
+ * for the precision/error system.
+ *
+ * This information is determined at configure time
+ * and is platform dependent. Edit at your own risk.
+ *
+ * PLATFORM: WHIZ-O-MATIC
+ * CONFIG-DATE: Thu Nov 19 19:27:18 MST 1998
+ * CONFIG-HOST: nnn.lanl.gov
+ */
+
+/* machine precision constants */
+/* #define GSL_MACH_EPS 1.0e-15 */
+#define GSL_SQRT_MACH_EPS 3.2e-08
+#define GSL_ROOT3_MACH_EPS 1.0e-05
+#define GSL_ROOT4_MACH_EPS 0.000178
+#define GSL_ROOT5_MACH_EPS 0.00100
+#define GSL_ROOT6_MACH_EPS 0.00316
+#define GSL_LOG_MACH_EPS (-34.54)
+
+
+#endif /* __GSL_MACHINE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_math.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_math.h
new file mode 100644
index 00000000..2d09df17
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_math.h
@@ -0,0 +1,164 @@
+/* gsl_math.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATH_H__
+#define __GSL_MATH_H__
+#include <math.h>
+#include <gsl/gsl_sys.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_machine.h>
+#include <gsl/gsl_precision.h>
+#include <gsl/gsl_nan.h>
+#include <gsl/gsl_pow_int.h>
+#include <gsl/gsl_minmax.h>
+
+#ifndef M_E
+#define M_E 2.71828182845904523536028747135 /* e */
+#endif
+
+#ifndef M_LOG2E
+#define M_LOG2E 1.44269504088896340735992468100 /* log_2 (e) */
+#endif
+
+#ifndef M_LOG10E
+#define M_LOG10E 0.43429448190325182765112891892 /* log_10 (e) */
+#endif
+
+#ifndef M_SQRT2
+#define M_SQRT2 1.41421356237309504880168872421 /* sqrt(2) */
+#endif
+
+#ifndef M_SQRT1_2
+#define M_SQRT1_2 0.70710678118654752440084436210 /* sqrt(1/2) */
+#endif
+
+
+#ifndef M_SQRT3
+#define M_SQRT3 1.73205080756887729352744634151 /* sqrt(3) */
+#endif
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846264338328 /* pi */
+#endif
+
+#ifndef M_PI_2
+#define M_PI_2 1.57079632679489661923132169164 /* pi/2 */
+#endif
+
+#ifndef M_PI_4
+#define M_PI_4 0.78539816339744830961566084582 /* pi/4 */
+#endif
+
+#ifndef M_SQRTPI
+#define M_SQRTPI 1.77245385090551602729816748334 /* sqrt(pi) */
+#endif
+
+#ifndef M_2_SQRTPI
+#define M_2_SQRTPI 1.12837916709551257389615890312 /* 2/sqrt(pi) */
+#endif
+
+#ifndef M_1_PI
+#define M_1_PI 0.31830988618379067153776752675 /* 1/pi */
+#endif
+
+#ifndef M_2_PI
+#define M_2_PI 0.63661977236758134307553505349 /* 2/pi */
+#endif
+
+#ifndef M_LN10
+#define M_LN10 2.30258509299404568401799145468 /* ln(10) */
+#endif
+
+#ifndef M_LN2
+#define M_LN2 0.69314718055994530941723212146 /* ln(2) */
+#endif
+
+#ifndef M_LNPI
+#define M_LNPI 1.14472988584940017414342735135 /* ln(pi) */
+#endif
+
+#ifndef M_EULER
+#define M_EULER 0.57721566490153286060651209008 /* Euler constant */
+#endif
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* other needlessly compulsive abstractions */
+
+#define GSL_IS_ODD(n) ((n) & 1)
+#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
+#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
+
+/* Return nonzero if x is a real number, i.e. non NaN or infinite. */
+#define GSL_IS_REAL(x) (gsl_finite(x))
+
+/* Definition of an arbitrary function with parameters */
+
+struct gsl_function_struct
+{
+ double (* function) (double x, void * params);
+ void * params;
+};
+
+typedef struct gsl_function_struct gsl_function ;
+
+#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
+
+/* Definition of an arbitrary function returning two values, r1, r2 */
+
+struct gsl_function_fdf_struct
+{
+ double (* f) (double x, void * params);
+ double (* df) (double x, void * params);
+ void (* fdf) (double x, void * params, double * f, double * df);
+ void * params;
+};
+
+typedef struct gsl_function_fdf_struct gsl_function_fdf ;
+
+#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
+#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
+#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
+
+
+/* Definition of an arbitrary vector-valued function with parameters */
+
+struct gsl_function_vec_struct
+{
+ int (* function) (double x, double y[], void * params);
+ void * params;
+};
+
+typedef struct gsl_function_vec_struct gsl_function_vec ;
+
+#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
+
+__END_DECLS
+
+#endif /* __GSL_MATH_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix.h
new file mode 100644
index 00000000..9b7ed765
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix.h
@@ -0,0 +1,25 @@
+#ifndef __GSL_MATRIX_H__
+#define __GSL_MATRIX_H__
+
+#include <gsl/gsl_matrix_complex_long_double.h>
+#include <gsl/gsl_matrix_complex_double.h>
+#include <gsl/gsl_matrix_complex_float.h>
+
+#include <gsl/gsl_matrix_long_double.h>
+#include <gsl/gsl_matrix_double.h>
+#include <gsl/gsl_matrix_float.h>
+
+#include <gsl/gsl_matrix_ulong.h>
+#include <gsl/gsl_matrix_long.h>
+
+#include <gsl/gsl_matrix_uint.h>
+#include <gsl/gsl_matrix_int.h>
+
+#include <gsl/gsl_matrix_ushort.h>
+#include <gsl/gsl_matrix_short.h>
+
+#include <gsl/gsl_matrix_uchar.h>
+#include <gsl/gsl_matrix_char.h>
+
+
+#endif /* __GSL_MATRIX_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_char.h
new file mode 100644
index 00000000..1e6234a1
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_char.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_CHAR_H__
+#define __GSL_MATRIX_CHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_char.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ char * data;
+ gsl_block_char * block;
+ int owner;
+} gsl_matrix_char;
+
+typedef struct
+{
+ gsl_matrix_char matrix;
+} _gsl_matrix_char_view;
+
+typedef _gsl_matrix_char_view gsl_matrix_char_view;
+
+typedef struct
+{
+ gsl_matrix_char matrix;
+} _gsl_matrix_char_const_view;
+
+typedef const _gsl_matrix_char_const_view gsl_matrix_char_const_view;
+
+/* Allocation */
+
+gsl_matrix_char *
+gsl_matrix_char_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_char *
+gsl_matrix_char_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_char *
+gsl_matrix_char_alloc_from_block (gsl_block_char * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_char *
+gsl_matrix_char_alloc_from_matrix (gsl_matrix_char * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_char *
+gsl_vector_char_alloc_row_from_matrix (gsl_matrix_char * m,
+ const size_t i);
+
+gsl_vector_char *
+gsl_vector_char_alloc_col_from_matrix (gsl_matrix_char * m,
+ const size_t j);
+
+void gsl_matrix_char_free (gsl_matrix_char * m);
+
+/* Views */
+
+_gsl_matrix_char_view
+gsl_matrix_char_submatrix (gsl_matrix_char * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_char_view
+gsl_matrix_char_row (gsl_matrix_char * m, const size_t i);
+
+_gsl_vector_char_view
+gsl_matrix_char_column (gsl_matrix_char * m, const size_t j);
+
+_gsl_vector_char_view
+gsl_matrix_char_diagonal (gsl_matrix_char * m);
+
+_gsl_vector_char_view
+gsl_matrix_char_subdiagonal (gsl_matrix_char * m, const size_t k);
+
+_gsl_vector_char_view
+gsl_matrix_char_superdiagonal (gsl_matrix_char * m, const size_t k);
+
+_gsl_vector_char_view
+gsl_matrix_char_subrow (gsl_matrix_char * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_char_view
+gsl_matrix_char_subcolumn (gsl_matrix_char * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_char_view
+gsl_matrix_char_view_array (char * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_char_view
+gsl_matrix_char_view_array_with_tda (char * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_char_view
+gsl_matrix_char_view_vector (gsl_vector_char * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_char_view
+gsl_matrix_char_view_vector_with_tda (gsl_vector_char * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_char_const_view
+gsl_matrix_char_const_submatrix (const gsl_matrix_char * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_char_const_view
+gsl_matrix_char_const_row (const gsl_matrix_char * m,
+ const size_t i);
+
+_gsl_vector_char_const_view
+gsl_matrix_char_const_column (const gsl_matrix_char * m,
+ const size_t j);
+
+_gsl_vector_char_const_view
+gsl_matrix_char_const_diagonal (const gsl_matrix_char * m);
+
+_gsl_vector_char_const_view
+gsl_matrix_char_const_subdiagonal (const gsl_matrix_char * m,
+ const size_t k);
+
+_gsl_vector_char_const_view
+gsl_matrix_char_const_superdiagonal (const gsl_matrix_char * m,
+ const size_t k);
+
+_gsl_vector_char_const_view
+gsl_matrix_char_const_subrow (const gsl_matrix_char * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_char_const_view
+gsl_matrix_char_const_subcolumn (const gsl_matrix_char * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_char_const_view
+gsl_matrix_char_const_view_array (const char * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_char_const_view
+gsl_matrix_char_const_view_array_with_tda (const char * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_char_const_view
+gsl_matrix_char_const_view_vector (const gsl_vector_char * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_char_const_view
+gsl_matrix_char_const_view_vector_with_tda (const gsl_vector_char * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_char_set_zero (gsl_matrix_char * m);
+void gsl_matrix_char_set_identity (gsl_matrix_char * m);
+void gsl_matrix_char_set_all (gsl_matrix_char * m, char x);
+
+int gsl_matrix_char_fread (FILE * stream, gsl_matrix_char * m) ;
+int gsl_matrix_char_fwrite (FILE * stream, const gsl_matrix_char * m) ;
+int gsl_matrix_char_fscanf (FILE * stream, gsl_matrix_char * m);
+int gsl_matrix_char_fprintf (FILE * stream, const gsl_matrix_char * m, const char * format);
+
+int gsl_matrix_char_memcpy(gsl_matrix_char * dest, const gsl_matrix_char * src);
+int gsl_matrix_char_swap(gsl_matrix_char * m1, gsl_matrix_char * m2);
+
+int gsl_matrix_char_swap_rows(gsl_matrix_char * m, const size_t i, const size_t j);
+int gsl_matrix_char_swap_columns(gsl_matrix_char * m, const size_t i, const size_t j);
+int gsl_matrix_char_swap_rowcol(gsl_matrix_char * m, const size_t i, const size_t j);
+int gsl_matrix_char_transpose (gsl_matrix_char * m);
+int gsl_matrix_char_transpose_memcpy (gsl_matrix_char * dest, const gsl_matrix_char * src);
+
+char gsl_matrix_char_max (const gsl_matrix_char * m);
+char gsl_matrix_char_min (const gsl_matrix_char * m);
+void gsl_matrix_char_minmax (const gsl_matrix_char * m, char * min_out, char * max_out);
+
+void gsl_matrix_char_max_index (const gsl_matrix_char * m, size_t * imax, size_t *jmax);
+void gsl_matrix_char_min_index (const gsl_matrix_char * m, size_t * imin, size_t *jmin);
+void gsl_matrix_char_minmax_index (const gsl_matrix_char * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_char_equal (const gsl_matrix_char * a, const gsl_matrix_char * b);
+
+int gsl_matrix_char_isnull (const gsl_matrix_char * m);
+int gsl_matrix_char_ispos (const gsl_matrix_char * m);
+int gsl_matrix_char_isneg (const gsl_matrix_char * m);
+int gsl_matrix_char_isnonneg (const gsl_matrix_char * m);
+
+int gsl_matrix_char_add (gsl_matrix_char * a, const gsl_matrix_char * b);
+int gsl_matrix_char_sub (gsl_matrix_char * a, const gsl_matrix_char * b);
+int gsl_matrix_char_mul_elements (gsl_matrix_char * a, const gsl_matrix_char * b);
+int gsl_matrix_char_div_elements (gsl_matrix_char * a, const gsl_matrix_char * b);
+int gsl_matrix_char_scale (gsl_matrix_char * a, const double x);
+int gsl_matrix_char_add_constant (gsl_matrix_char * a, const double x);
+int gsl_matrix_char_add_diagonal (gsl_matrix_char * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_char_get_row(gsl_vector_char * v, const gsl_matrix_char * m, const size_t i);
+int gsl_matrix_char_get_col(gsl_vector_char * v, const gsl_matrix_char * m, const size_t j);
+int gsl_matrix_char_set_row(gsl_matrix_char * m, const size_t i, const gsl_vector_char * v);
+int gsl_matrix_char_set_col(gsl_matrix_char * m, const size_t j, const gsl_vector_char * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL char gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x);
+INLINE_DECL char * gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j);
+INLINE_DECL const char * gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+char
+gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+char *
+gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (char *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const char *
+gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const char *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_CHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_double.h
new file mode 100644
index 00000000..1564f7cc
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_double.h
@@ -0,0 +1,351 @@
+/* matrix/gsl_matrix_complex_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_COMPLEX_DOUBLE_H__
+#define __GSL_MATRIX_COMPLEX_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_complex_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ double * data;
+ gsl_block_complex * block;
+ int owner;
+} gsl_matrix_complex ;
+
+typedef struct
+{
+ gsl_matrix_complex matrix;
+} _gsl_matrix_complex_view;
+
+typedef _gsl_matrix_complex_view gsl_matrix_complex_view;
+
+typedef struct
+{
+ gsl_matrix_complex matrix;
+} _gsl_matrix_complex_const_view;
+
+typedef const _gsl_matrix_complex_const_view gsl_matrix_complex_const_view;
+
+
+/* Allocation */
+
+gsl_matrix_complex *
+gsl_matrix_complex_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_complex *
+gsl_matrix_complex_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_complex *
+gsl_matrix_complex_alloc_from_block (gsl_block_complex * b,
+ const size_t offset,
+ const size_t n1, const size_t n2, const size_t d2);
+
+gsl_matrix_complex *
+gsl_matrix_complex_alloc_from_matrix (gsl_matrix_complex * b,
+ const size_t k1, const size_t k2,
+ const size_t n1, const size_t n2);
+
+gsl_vector_complex *
+gsl_vector_complex_alloc_row_from_matrix (gsl_matrix_complex * m,
+ const size_t i);
+
+gsl_vector_complex *
+gsl_vector_complex_alloc_col_from_matrix (gsl_matrix_complex * m,
+ const size_t j);
+
+void gsl_matrix_complex_free (gsl_matrix_complex * m);
+
+/* Views */
+
+_gsl_matrix_complex_view
+gsl_matrix_complex_submatrix (gsl_matrix_complex * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_complex_view
+gsl_matrix_complex_row (gsl_matrix_complex * m, const size_t i);
+
+_gsl_vector_complex_view
+gsl_matrix_complex_column (gsl_matrix_complex * m, const size_t j);
+
+_gsl_vector_complex_view
+gsl_matrix_complex_diagonal (gsl_matrix_complex * m);
+
+_gsl_vector_complex_view
+gsl_matrix_complex_subdiagonal (gsl_matrix_complex * m, const size_t k);
+
+_gsl_vector_complex_view
+gsl_matrix_complex_superdiagonal (gsl_matrix_complex * m, const size_t k);
+
+_gsl_vector_complex_view
+gsl_matrix_complex_subrow (gsl_matrix_complex * m,
+ const size_t i, const size_t offset,
+ const size_t n);
+
+_gsl_vector_complex_view
+gsl_matrix_complex_subcolumn (gsl_matrix_complex * m,
+ const size_t j, const size_t offset,
+ const size_t n);
+
+_gsl_matrix_complex_view
+gsl_matrix_complex_view_array (double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_view
+gsl_matrix_complex_view_array_with_tda (double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_complex_view
+gsl_matrix_complex_view_vector (gsl_vector_complex * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_view
+gsl_matrix_complex_view_vector_with_tda (gsl_vector_complex * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_complex_const_view
+gsl_matrix_complex_const_submatrix (const gsl_matrix_complex * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_complex_const_view
+gsl_matrix_complex_const_row (const gsl_matrix_complex * m,
+ const size_t i);
+
+_gsl_vector_complex_const_view
+gsl_matrix_complex_const_column (const gsl_matrix_complex * m,
+ const size_t j);
+
+_gsl_vector_complex_const_view
+gsl_matrix_complex_const_diagonal (const gsl_matrix_complex * m);
+
+_gsl_vector_complex_const_view
+gsl_matrix_complex_const_subdiagonal (const gsl_matrix_complex * m,
+ const size_t k);
+
+_gsl_vector_complex_const_view
+gsl_matrix_complex_const_superdiagonal (const gsl_matrix_complex * m,
+ const size_t k);
+
+_gsl_vector_complex_const_view
+gsl_matrix_complex_const_subrow (const gsl_matrix_complex * m,
+ const size_t i, const size_t offset,
+ const size_t n);
+
+_gsl_vector_complex_const_view
+gsl_matrix_complex_const_subcolumn (const gsl_matrix_complex * m,
+ const size_t j, const size_t offset,
+ const size_t n);
+
+_gsl_matrix_complex_const_view
+gsl_matrix_complex_const_view_array (const double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_const_view
+gsl_matrix_complex_const_view_array_with_tda (const double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_complex_const_view
+gsl_matrix_complex_const_view_vector (const gsl_vector_complex * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_const_view
+gsl_matrix_complex_const_view_vector_with_tda (const gsl_vector_complex * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_complex_set_zero (gsl_matrix_complex * m);
+void gsl_matrix_complex_set_identity (gsl_matrix_complex * m);
+void gsl_matrix_complex_set_all (gsl_matrix_complex * m, gsl_complex x);
+
+int gsl_matrix_complex_fread (FILE * stream, gsl_matrix_complex * m) ;
+int gsl_matrix_complex_fwrite (FILE * stream, const gsl_matrix_complex * m) ;
+int gsl_matrix_complex_fscanf (FILE * stream, gsl_matrix_complex * m);
+int gsl_matrix_complex_fprintf (FILE * stream, const gsl_matrix_complex * m, const char * format);
+
+int gsl_matrix_complex_memcpy(gsl_matrix_complex * dest, const gsl_matrix_complex * src);
+int gsl_matrix_complex_swap(gsl_matrix_complex * m1, gsl_matrix_complex * m2);
+
+int gsl_matrix_complex_swap_rows(gsl_matrix_complex * m, const size_t i, const size_t j);
+int gsl_matrix_complex_swap_columns(gsl_matrix_complex * m, const size_t i, const size_t j);
+int gsl_matrix_complex_swap_rowcol(gsl_matrix_complex * m, const size_t i, const size_t j);
+
+int gsl_matrix_complex_transpose (gsl_matrix_complex * m);
+int gsl_matrix_complex_transpose_memcpy (gsl_matrix_complex * dest, const gsl_matrix_complex * src);
+
+int gsl_matrix_complex_equal (const gsl_matrix_complex * a, const gsl_matrix_complex * b);
+
+int gsl_matrix_complex_isnull (const gsl_matrix_complex * m);
+int gsl_matrix_complex_ispos (const gsl_matrix_complex * m);
+int gsl_matrix_complex_isneg (const gsl_matrix_complex * m);
+int gsl_matrix_complex_isnonneg (const gsl_matrix_complex * m);
+
+int gsl_matrix_complex_add (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+int gsl_matrix_complex_sub (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+int gsl_matrix_complex_mul_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+int gsl_matrix_complex_div_elements (gsl_matrix_complex * a, const gsl_matrix_complex * b);
+int gsl_matrix_complex_scale (gsl_matrix_complex * a, const gsl_complex x);
+int gsl_matrix_complex_add_constant (gsl_matrix_complex * a, const gsl_complex x);
+int gsl_matrix_complex_add_diagonal (gsl_matrix_complex * a, const gsl_complex x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_complex_get_row(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t i);
+int gsl_matrix_complex_get_col(gsl_vector_complex * v, const gsl_matrix_complex * m, const size_t j);
+int gsl_matrix_complex_set_row(gsl_matrix_complex * m, const size_t i, const gsl_vector_complex * v);
+int gsl_matrix_complex_set_col(gsl_matrix_complex * m, const size_t j, const gsl_vector_complex * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL gsl_complex gsl_matrix_complex_get(const gsl_matrix_complex * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_complex_set(gsl_matrix_complex * m, const size_t i, const size_t j, const gsl_complex x);
+
+INLINE_DECL gsl_complex * gsl_matrix_complex_ptr(gsl_matrix_complex * m, const size_t i, const size_t j);
+INLINE_DECL const gsl_complex * gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+gsl_complex
+gsl_matrix_complex_get(const gsl_matrix_complex * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ gsl_complex zero = {{0,0}};
+
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
+ }
+ }
+#endif
+ return *(gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_complex_set(gsl_matrix_complex * m,
+ const size_t i, const size_t j, const gsl_complex x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ *(gsl_complex *)(m->data + 2*(i * m->tda + j)) = x ;
+}
+
+INLINE_FUN
+gsl_complex *
+gsl_matrix_complex_ptr(gsl_matrix_complex * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const gsl_complex *
+gsl_matrix_complex_const_ptr(const gsl_matrix_complex * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const gsl_complex *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_COMPLEX_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_float.h
new file mode 100644
index 00000000..807ace41
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_float.h
@@ -0,0 +1,351 @@
+/* matrix/gsl_matrix_complex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_COMPLEX_FLOAT_H__
+#define __GSL_MATRIX_COMPLEX_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_complex_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ float * data;
+ gsl_block_complex_float * block;
+ int owner;
+} gsl_matrix_complex_float ;
+
+typedef struct
+{
+ gsl_matrix_complex_float matrix;
+} _gsl_matrix_complex_float_view;
+
+typedef _gsl_matrix_complex_float_view gsl_matrix_complex_float_view;
+
+typedef struct
+{
+ gsl_matrix_complex_float matrix;
+} _gsl_matrix_complex_float_const_view;
+
+typedef const _gsl_matrix_complex_float_const_view gsl_matrix_complex_float_const_view;
+
+
+/* Allocation */
+
+gsl_matrix_complex_float *
+gsl_matrix_complex_float_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_complex_float *
+gsl_matrix_complex_float_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_complex_float *
+gsl_matrix_complex_float_alloc_from_block (gsl_block_complex_float * b,
+ const size_t offset,
+ const size_t n1, const size_t n2, const size_t d2);
+
+gsl_matrix_complex_float *
+gsl_matrix_complex_float_alloc_from_matrix (gsl_matrix_complex_float * b,
+ const size_t k1, const size_t k2,
+ const size_t n1, const size_t n2);
+
+gsl_vector_complex_float *
+gsl_vector_complex_float_alloc_row_from_matrix (gsl_matrix_complex_float * m,
+ const size_t i);
+
+gsl_vector_complex_float *
+gsl_vector_complex_float_alloc_col_from_matrix (gsl_matrix_complex_float * m,
+ const size_t j);
+
+void gsl_matrix_complex_float_free (gsl_matrix_complex_float * m);
+
+/* Views */
+
+_gsl_matrix_complex_float_view
+gsl_matrix_complex_float_submatrix (gsl_matrix_complex_float * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_complex_float_view
+gsl_matrix_complex_float_row (gsl_matrix_complex_float * m, const size_t i);
+
+_gsl_vector_complex_float_view
+gsl_matrix_complex_float_column (gsl_matrix_complex_float * m, const size_t j);
+
+_gsl_vector_complex_float_view
+gsl_matrix_complex_float_diagonal (gsl_matrix_complex_float * m);
+
+_gsl_vector_complex_float_view
+gsl_matrix_complex_float_subdiagonal (gsl_matrix_complex_float * m, const size_t k);
+
+_gsl_vector_complex_float_view
+gsl_matrix_complex_float_superdiagonal (gsl_matrix_complex_float * m, const size_t k);
+
+_gsl_vector_complex_float_view
+gsl_matrix_complex_float_subrow (gsl_matrix_complex_float * m,
+ const size_t i, const size_t offset,
+ const size_t n);
+
+_gsl_vector_complex_float_view
+gsl_matrix_complex_float_subcolumn (gsl_matrix_complex_float * m,
+ const size_t j, const size_t offset,
+ const size_t n);
+
+_gsl_matrix_complex_float_view
+gsl_matrix_complex_float_view_array (float * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_float_view
+gsl_matrix_complex_float_view_array_with_tda (float * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_complex_float_view
+gsl_matrix_complex_float_view_vector (gsl_vector_complex_float * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_float_view
+gsl_matrix_complex_float_view_vector_with_tda (gsl_vector_complex_float * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_complex_float_const_view
+gsl_matrix_complex_float_const_submatrix (const gsl_matrix_complex_float * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_complex_float_const_view
+gsl_matrix_complex_float_const_row (const gsl_matrix_complex_float * m,
+ const size_t i);
+
+_gsl_vector_complex_float_const_view
+gsl_matrix_complex_float_const_column (const gsl_matrix_complex_float * m,
+ const size_t j);
+
+_gsl_vector_complex_float_const_view
+gsl_matrix_complex_float_const_diagonal (const gsl_matrix_complex_float * m);
+
+_gsl_vector_complex_float_const_view
+gsl_matrix_complex_float_const_subdiagonal (const gsl_matrix_complex_float * m,
+ const size_t k);
+
+_gsl_vector_complex_float_const_view
+gsl_matrix_complex_float_const_superdiagonal (const gsl_matrix_complex_float * m,
+ const size_t k);
+
+_gsl_vector_complex_float_const_view
+gsl_matrix_complex_float_const_subrow (const gsl_matrix_complex_float * m,
+ const size_t i, const size_t offset,
+ const size_t n);
+
+_gsl_vector_complex_float_const_view
+gsl_matrix_complex_float_const_subcolumn (const gsl_matrix_complex_float * m,
+ const size_t j, const size_t offset,
+ const size_t n);
+
+_gsl_matrix_complex_float_const_view
+gsl_matrix_complex_float_const_view_array (const float * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_float_const_view
+gsl_matrix_complex_float_const_view_array_with_tda (const float * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_complex_float_const_view
+gsl_matrix_complex_float_const_view_vector (const gsl_vector_complex_float * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_float_const_view
+gsl_matrix_complex_float_const_view_vector_with_tda (const gsl_vector_complex_float * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_complex_float_set_zero (gsl_matrix_complex_float * m);
+void gsl_matrix_complex_float_set_identity (gsl_matrix_complex_float * m);
+void gsl_matrix_complex_float_set_all (gsl_matrix_complex_float * m, gsl_complex_float x);
+
+int gsl_matrix_complex_float_fread (FILE * stream, gsl_matrix_complex_float * m) ;
+int gsl_matrix_complex_float_fwrite (FILE * stream, const gsl_matrix_complex_float * m) ;
+int gsl_matrix_complex_float_fscanf (FILE * stream, gsl_matrix_complex_float * m);
+int gsl_matrix_complex_float_fprintf (FILE * stream, const gsl_matrix_complex_float * m, const char * format);
+
+int gsl_matrix_complex_float_memcpy(gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src);
+int gsl_matrix_complex_float_swap(gsl_matrix_complex_float * m1, gsl_matrix_complex_float * m2);
+
+int gsl_matrix_complex_float_swap_rows(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+int gsl_matrix_complex_float_swap_columns(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+int gsl_matrix_complex_float_swap_rowcol(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+
+int gsl_matrix_complex_float_transpose (gsl_matrix_complex_float * m);
+int gsl_matrix_complex_float_transpose_memcpy (gsl_matrix_complex_float * dest, const gsl_matrix_complex_float * src);
+
+int gsl_matrix_complex_float_equal (const gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+
+int gsl_matrix_complex_float_isnull (const gsl_matrix_complex_float * m);
+int gsl_matrix_complex_float_ispos (const gsl_matrix_complex_float * m);
+int gsl_matrix_complex_float_isneg (const gsl_matrix_complex_float * m);
+int gsl_matrix_complex_float_isnonneg (const gsl_matrix_complex_float * m);
+
+int gsl_matrix_complex_float_add (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+int gsl_matrix_complex_float_sub (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+int gsl_matrix_complex_float_mul_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+int gsl_matrix_complex_float_div_elements (gsl_matrix_complex_float * a, const gsl_matrix_complex_float * b);
+int gsl_matrix_complex_float_scale (gsl_matrix_complex_float * a, const gsl_complex_float x);
+int gsl_matrix_complex_float_add_constant (gsl_matrix_complex_float * a, const gsl_complex_float x);
+int gsl_matrix_complex_float_add_diagonal (gsl_matrix_complex_float * a, const gsl_complex_float x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_complex_float_get_row(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t i);
+int gsl_matrix_complex_float_get_col(gsl_vector_complex_float * v, const gsl_matrix_complex_float * m, const size_t j);
+int gsl_matrix_complex_float_set_row(gsl_matrix_complex_float * m, const size_t i, const gsl_vector_complex_float * v);
+int gsl_matrix_complex_float_set_col(gsl_matrix_complex_float * m, const size_t j, const gsl_vector_complex_float * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL gsl_complex_float gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, const size_t i, const size_t j, const gsl_complex_float x);
+
+INLINE_DECL gsl_complex_float * gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m, const size_t i, const size_t j);
+INLINE_DECL const gsl_complex_float * gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+gsl_complex_float
+gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ gsl_complex_float zero = {{0,0}};
+
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
+ }
+ }
+#endif
+ return *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_complex_float_set(gsl_matrix_complex_float * m,
+ const size_t i, const size_t j, const gsl_complex_float x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ *(gsl_complex_float *)(m->data + 2*(i * m->tda + j)) = x ;
+}
+
+INLINE_FUN
+gsl_complex_float *
+gsl_matrix_complex_float_ptr(gsl_matrix_complex_float * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const gsl_complex_float *
+gsl_matrix_complex_float_const_ptr(const gsl_matrix_complex_float * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const gsl_complex_float *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_COMPLEX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_long_double.h
new file mode 100644
index 00000000..b68ccb6b
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_complex_long_double.h
@@ -0,0 +1,351 @@
+/* matrix/gsl_matrix_complex_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__
+#define __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_complex_long_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ long double * data;
+ gsl_block_complex_long_double * block;
+ int owner;
+} gsl_matrix_complex_long_double ;
+
+typedef struct
+{
+ gsl_matrix_complex_long_double matrix;
+} _gsl_matrix_complex_long_double_view;
+
+typedef _gsl_matrix_complex_long_double_view gsl_matrix_complex_long_double_view;
+
+typedef struct
+{
+ gsl_matrix_complex_long_double matrix;
+} _gsl_matrix_complex_long_double_const_view;
+
+typedef const _gsl_matrix_complex_long_double_const_view gsl_matrix_complex_long_double_const_view;
+
+
+/* Allocation */
+
+gsl_matrix_complex_long_double *
+gsl_matrix_complex_long_double_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_complex_long_double *
+gsl_matrix_complex_long_double_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_complex_long_double *
+gsl_matrix_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b,
+ const size_t offset,
+ const size_t n1, const size_t n2, const size_t d2);
+
+gsl_matrix_complex_long_double *
+gsl_matrix_complex_long_double_alloc_from_matrix (gsl_matrix_complex_long_double * b,
+ const size_t k1, const size_t k2,
+ const size_t n1, const size_t n2);
+
+gsl_vector_complex_long_double *
+gsl_vector_complex_long_double_alloc_row_from_matrix (gsl_matrix_complex_long_double * m,
+ const size_t i);
+
+gsl_vector_complex_long_double *
+gsl_vector_complex_long_double_alloc_col_from_matrix (gsl_matrix_complex_long_double * m,
+ const size_t j);
+
+void gsl_matrix_complex_long_double_free (gsl_matrix_complex_long_double * m);
+
+/* Views */
+
+_gsl_matrix_complex_long_double_view
+gsl_matrix_complex_long_double_submatrix (gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_complex_long_double_view
+gsl_matrix_complex_long_double_row (gsl_matrix_complex_long_double * m, const size_t i);
+
+_gsl_vector_complex_long_double_view
+gsl_matrix_complex_long_double_column (gsl_matrix_complex_long_double * m, const size_t j);
+
+_gsl_vector_complex_long_double_view
+gsl_matrix_complex_long_double_diagonal (gsl_matrix_complex_long_double * m);
+
+_gsl_vector_complex_long_double_view
+gsl_matrix_complex_long_double_subdiagonal (gsl_matrix_complex_long_double * m, const size_t k);
+
+_gsl_vector_complex_long_double_view
+gsl_matrix_complex_long_double_superdiagonal (gsl_matrix_complex_long_double * m, const size_t k);
+
+_gsl_vector_complex_long_double_view
+gsl_matrix_complex_long_double_subrow (gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t offset,
+ const size_t n);
+
+_gsl_vector_complex_long_double_view
+gsl_matrix_complex_long_double_subcolumn (gsl_matrix_complex_long_double * m,
+ const size_t j, const size_t offset,
+ const size_t n);
+
+_gsl_matrix_complex_long_double_view
+gsl_matrix_complex_long_double_view_array (long double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_long_double_view
+gsl_matrix_complex_long_double_view_array_with_tda (long double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_complex_long_double_view
+gsl_matrix_complex_long_double_view_vector (gsl_vector_complex_long_double * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_long_double_view
+gsl_matrix_complex_long_double_view_vector_with_tda (gsl_vector_complex_long_double * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_submatrix (const gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_row (const gsl_matrix_complex_long_double * m,
+ const size_t i);
+
+_gsl_vector_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_column (const gsl_matrix_complex_long_double * m,
+ const size_t j);
+
+_gsl_vector_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_diagonal (const gsl_matrix_complex_long_double * m);
+
+_gsl_vector_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_subdiagonal (const gsl_matrix_complex_long_double * m,
+ const size_t k);
+
+_gsl_vector_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_superdiagonal (const gsl_matrix_complex_long_double * m,
+ const size_t k);
+
+_gsl_vector_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_subrow (const gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t offset,
+ const size_t n);
+
+_gsl_vector_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_subcolumn (const gsl_matrix_complex_long_double * m,
+ const size_t j, const size_t offset,
+ const size_t n);
+
+_gsl_matrix_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_view_array (const long double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_view_array_with_tda (const long double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_view_vector (const gsl_vector_complex_long_double * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_complex_long_double_const_view
+gsl_matrix_complex_long_double_const_view_vector_with_tda (const gsl_vector_complex_long_double * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_complex_long_double_set_zero (gsl_matrix_complex_long_double * m);
+void gsl_matrix_complex_long_double_set_identity (gsl_matrix_complex_long_double * m);
+void gsl_matrix_complex_long_double_set_all (gsl_matrix_complex_long_double * m, gsl_complex_long_double x);
+
+int gsl_matrix_complex_long_double_fread (FILE * stream, gsl_matrix_complex_long_double * m) ;
+int gsl_matrix_complex_long_double_fwrite (FILE * stream, const gsl_matrix_complex_long_double * m) ;
+int gsl_matrix_complex_long_double_fscanf (FILE * stream, gsl_matrix_complex_long_double * m);
+int gsl_matrix_complex_long_double_fprintf (FILE * stream, const gsl_matrix_complex_long_double * m, const char * format);
+
+int gsl_matrix_complex_long_double_memcpy(gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src);
+int gsl_matrix_complex_long_double_swap(gsl_matrix_complex_long_double * m1, gsl_matrix_complex_long_double * m2);
+
+int gsl_matrix_complex_long_double_swap_rows(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+int gsl_matrix_complex_long_double_swap_columns(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+int gsl_matrix_complex_long_double_swap_rowcol(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+
+int gsl_matrix_complex_long_double_transpose (gsl_matrix_complex_long_double * m);
+int gsl_matrix_complex_long_double_transpose_memcpy (gsl_matrix_complex_long_double * dest, const gsl_matrix_complex_long_double * src);
+
+int gsl_matrix_complex_long_double_equal (const gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+
+int gsl_matrix_complex_long_double_isnull (const gsl_matrix_complex_long_double * m);
+int gsl_matrix_complex_long_double_ispos (const gsl_matrix_complex_long_double * m);
+int gsl_matrix_complex_long_double_isneg (const gsl_matrix_complex_long_double * m);
+int gsl_matrix_complex_long_double_isnonneg (const gsl_matrix_complex_long_double * m);
+
+int gsl_matrix_complex_long_double_add (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+int gsl_matrix_complex_long_double_sub (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+int gsl_matrix_complex_long_double_mul_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+int gsl_matrix_complex_long_double_div_elements (gsl_matrix_complex_long_double * a, const gsl_matrix_complex_long_double * b);
+int gsl_matrix_complex_long_double_scale (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
+int gsl_matrix_complex_long_double_add_constant (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
+int gsl_matrix_complex_long_double_add_diagonal (gsl_matrix_complex_long_double * a, const gsl_complex_long_double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_complex_long_double_get_row(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t i);
+int gsl_matrix_complex_long_double_get_col(gsl_vector_complex_long_double * v, const gsl_matrix_complex_long_double * m, const size_t j);
+int gsl_matrix_complex_long_double_set_row(gsl_matrix_complex_long_double * m, const size_t i, const gsl_vector_complex_long_double * v);
+int gsl_matrix_complex_long_double_set_col(gsl_matrix_complex_long_double * m, const size_t j, const gsl_vector_complex_long_double * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL gsl_complex_long_double gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, const size_t i, const size_t j, const gsl_complex_long_double x);
+
+INLINE_DECL gsl_complex_long_double * gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+INLINE_DECL const gsl_complex_long_double * gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+gsl_complex_long_double
+gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ gsl_complex_long_double zero = {{0,0}};
+
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, zero) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, zero) ;
+ }
+ }
+#endif
+ return *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t j, const gsl_complex_long_double x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ *(gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) = x ;
+}
+
+INLINE_FUN
+gsl_complex_long_double *
+gsl_matrix_complex_long_double_ptr(gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const gsl_complex_long_double *
+gsl_matrix_complex_long_double_const_ptr(const gsl_matrix_complex_long_double * m,
+ const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const gsl_complex_long_double *)(m->data + 2*(i * m->tda + j)) ;
+}
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_COMPLEX_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_double.h
new file mode 100644
index 00000000..63566959
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_double.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_DOUBLE_H__
+#define __GSL_MATRIX_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ double * data;
+ gsl_block * block;
+ int owner;
+} gsl_matrix;
+
+typedef struct
+{
+ gsl_matrix matrix;
+} _gsl_matrix_view;
+
+typedef _gsl_matrix_view gsl_matrix_view;
+
+typedef struct
+{
+ gsl_matrix matrix;
+} _gsl_matrix_const_view;
+
+typedef const _gsl_matrix_const_view gsl_matrix_const_view;
+
+/* Allocation */
+
+gsl_matrix *
+gsl_matrix_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix *
+gsl_matrix_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix *
+gsl_matrix_alloc_from_block (gsl_block * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix *
+gsl_matrix_alloc_from_matrix (gsl_matrix * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector *
+gsl_vector_alloc_row_from_matrix (gsl_matrix * m,
+ const size_t i);
+
+gsl_vector *
+gsl_vector_alloc_col_from_matrix (gsl_matrix * m,
+ const size_t j);
+
+void gsl_matrix_free (gsl_matrix * m);
+
+/* Views */
+
+_gsl_matrix_view
+gsl_matrix_submatrix (gsl_matrix * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_view
+gsl_matrix_row (gsl_matrix * m, const size_t i);
+
+_gsl_vector_view
+gsl_matrix_column (gsl_matrix * m, const size_t j);
+
+_gsl_vector_view
+gsl_matrix_diagonal (gsl_matrix * m);
+
+_gsl_vector_view
+gsl_matrix_subdiagonal (gsl_matrix * m, const size_t k);
+
+_gsl_vector_view
+gsl_matrix_superdiagonal (gsl_matrix * m, const size_t k);
+
+_gsl_vector_view
+gsl_matrix_subrow (gsl_matrix * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_view
+gsl_matrix_subcolumn (gsl_matrix * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_view
+gsl_matrix_view_array (double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_view
+gsl_matrix_view_array_with_tda (double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_view
+gsl_matrix_view_vector (gsl_vector * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_view
+gsl_matrix_view_vector_with_tda (gsl_vector * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_const_view
+gsl_matrix_const_submatrix (const gsl_matrix * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_const_view
+gsl_matrix_const_row (const gsl_matrix * m,
+ const size_t i);
+
+_gsl_vector_const_view
+gsl_matrix_const_column (const gsl_matrix * m,
+ const size_t j);
+
+_gsl_vector_const_view
+gsl_matrix_const_diagonal (const gsl_matrix * m);
+
+_gsl_vector_const_view
+gsl_matrix_const_subdiagonal (const gsl_matrix * m,
+ const size_t k);
+
+_gsl_vector_const_view
+gsl_matrix_const_superdiagonal (const gsl_matrix * m,
+ const size_t k);
+
+_gsl_vector_const_view
+gsl_matrix_const_subrow (const gsl_matrix * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_const_view
+gsl_matrix_const_subcolumn (const gsl_matrix * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_const_view
+gsl_matrix_const_view_array (const double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_const_view
+gsl_matrix_const_view_array_with_tda (const double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_const_view
+gsl_matrix_const_view_vector (const gsl_vector * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_const_view
+gsl_matrix_const_view_vector_with_tda (const gsl_vector * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_set_zero (gsl_matrix * m);
+void gsl_matrix_set_identity (gsl_matrix * m);
+void gsl_matrix_set_all (gsl_matrix * m, double x);
+
+int gsl_matrix_fread (FILE * stream, gsl_matrix * m) ;
+int gsl_matrix_fwrite (FILE * stream, const gsl_matrix * m) ;
+int gsl_matrix_fscanf (FILE * stream, gsl_matrix * m);
+int gsl_matrix_fprintf (FILE * stream, const gsl_matrix * m, const char * format);
+
+int gsl_matrix_memcpy(gsl_matrix * dest, const gsl_matrix * src);
+int gsl_matrix_swap(gsl_matrix * m1, gsl_matrix * m2);
+
+int gsl_matrix_swap_rows(gsl_matrix * m, const size_t i, const size_t j);
+int gsl_matrix_swap_columns(gsl_matrix * m, const size_t i, const size_t j);
+int gsl_matrix_swap_rowcol(gsl_matrix * m, const size_t i, const size_t j);
+int gsl_matrix_transpose (gsl_matrix * m);
+int gsl_matrix_transpose_memcpy (gsl_matrix * dest, const gsl_matrix * src);
+
+double gsl_matrix_max (const gsl_matrix * m);
+double gsl_matrix_min (const gsl_matrix * m);
+void gsl_matrix_minmax (const gsl_matrix * m, double * min_out, double * max_out);
+
+void gsl_matrix_max_index (const gsl_matrix * m, size_t * imax, size_t *jmax);
+void gsl_matrix_min_index (const gsl_matrix * m, size_t * imin, size_t *jmin);
+void gsl_matrix_minmax_index (const gsl_matrix * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_equal (const gsl_matrix * a, const gsl_matrix * b);
+
+int gsl_matrix_isnull (const gsl_matrix * m);
+int gsl_matrix_ispos (const gsl_matrix * m);
+int gsl_matrix_isneg (const gsl_matrix * m);
+int gsl_matrix_isnonneg (const gsl_matrix * m);
+
+int gsl_matrix_add (gsl_matrix * a, const gsl_matrix * b);
+int gsl_matrix_sub (gsl_matrix * a, const gsl_matrix * b);
+int gsl_matrix_mul_elements (gsl_matrix * a, const gsl_matrix * b);
+int gsl_matrix_div_elements (gsl_matrix * a, const gsl_matrix * b);
+int gsl_matrix_scale (gsl_matrix * a, const double x);
+int gsl_matrix_add_constant (gsl_matrix * a, const double x);
+int gsl_matrix_add_diagonal (gsl_matrix * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_get_row(gsl_vector * v, const gsl_matrix * m, const size_t i);
+int gsl_matrix_get_col(gsl_vector * v, const gsl_matrix * m, const size_t j);
+int gsl_matrix_set_row(gsl_matrix * m, const size_t i, const gsl_vector * v);
+int gsl_matrix_set_col(gsl_matrix * m, const size_t j, const gsl_vector * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL double gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x);
+INLINE_DECL double * gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j);
+INLINE_DECL const double * gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+double
+gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+double *
+gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (double *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const double *
+gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const double *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_float.h
new file mode 100644
index 00000000..a91114ca
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_float.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_FLOAT_H__
+#define __GSL_MATRIX_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ float * data;
+ gsl_block_float * block;
+ int owner;
+} gsl_matrix_float;
+
+typedef struct
+{
+ gsl_matrix_float matrix;
+} _gsl_matrix_float_view;
+
+typedef _gsl_matrix_float_view gsl_matrix_float_view;
+
+typedef struct
+{
+ gsl_matrix_float matrix;
+} _gsl_matrix_float_const_view;
+
+typedef const _gsl_matrix_float_const_view gsl_matrix_float_const_view;
+
+/* Allocation */
+
+gsl_matrix_float *
+gsl_matrix_float_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_float *
+gsl_matrix_float_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_float *
+gsl_matrix_float_alloc_from_block (gsl_block_float * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_float *
+gsl_matrix_float_alloc_from_matrix (gsl_matrix_float * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_float *
+gsl_vector_float_alloc_row_from_matrix (gsl_matrix_float * m,
+ const size_t i);
+
+gsl_vector_float *
+gsl_vector_float_alloc_col_from_matrix (gsl_matrix_float * m,
+ const size_t j);
+
+void gsl_matrix_float_free (gsl_matrix_float * m);
+
+/* Views */
+
+_gsl_matrix_float_view
+gsl_matrix_float_submatrix (gsl_matrix_float * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_float_view
+gsl_matrix_float_row (gsl_matrix_float * m, const size_t i);
+
+_gsl_vector_float_view
+gsl_matrix_float_column (gsl_matrix_float * m, const size_t j);
+
+_gsl_vector_float_view
+gsl_matrix_float_diagonal (gsl_matrix_float * m);
+
+_gsl_vector_float_view
+gsl_matrix_float_subdiagonal (gsl_matrix_float * m, const size_t k);
+
+_gsl_vector_float_view
+gsl_matrix_float_superdiagonal (gsl_matrix_float * m, const size_t k);
+
+_gsl_vector_float_view
+gsl_matrix_float_subrow (gsl_matrix_float * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_float_view
+gsl_matrix_float_subcolumn (gsl_matrix_float * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_float_view
+gsl_matrix_float_view_array (float * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_float_view
+gsl_matrix_float_view_array_with_tda (float * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_float_view
+gsl_matrix_float_view_vector (gsl_vector_float * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_float_view
+gsl_matrix_float_view_vector_with_tda (gsl_vector_float * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_float_const_view
+gsl_matrix_float_const_submatrix (const gsl_matrix_float * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_float_const_view
+gsl_matrix_float_const_row (const gsl_matrix_float * m,
+ const size_t i);
+
+_gsl_vector_float_const_view
+gsl_matrix_float_const_column (const gsl_matrix_float * m,
+ const size_t j);
+
+_gsl_vector_float_const_view
+gsl_matrix_float_const_diagonal (const gsl_matrix_float * m);
+
+_gsl_vector_float_const_view
+gsl_matrix_float_const_subdiagonal (const gsl_matrix_float * m,
+ const size_t k);
+
+_gsl_vector_float_const_view
+gsl_matrix_float_const_superdiagonal (const gsl_matrix_float * m,
+ const size_t k);
+
+_gsl_vector_float_const_view
+gsl_matrix_float_const_subrow (const gsl_matrix_float * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_float_const_view
+gsl_matrix_float_const_subcolumn (const gsl_matrix_float * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_float_const_view
+gsl_matrix_float_const_view_array (const float * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_float_const_view
+gsl_matrix_float_const_view_array_with_tda (const float * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_float_const_view
+gsl_matrix_float_const_view_vector (const gsl_vector_float * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_float_const_view
+gsl_matrix_float_const_view_vector_with_tda (const gsl_vector_float * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_float_set_zero (gsl_matrix_float * m);
+void gsl_matrix_float_set_identity (gsl_matrix_float * m);
+void gsl_matrix_float_set_all (gsl_matrix_float * m, float x);
+
+int gsl_matrix_float_fread (FILE * stream, gsl_matrix_float * m) ;
+int gsl_matrix_float_fwrite (FILE * stream, const gsl_matrix_float * m) ;
+int gsl_matrix_float_fscanf (FILE * stream, gsl_matrix_float * m);
+int gsl_matrix_float_fprintf (FILE * stream, const gsl_matrix_float * m, const char * format);
+
+int gsl_matrix_float_memcpy(gsl_matrix_float * dest, const gsl_matrix_float * src);
+int gsl_matrix_float_swap(gsl_matrix_float * m1, gsl_matrix_float * m2);
+
+int gsl_matrix_float_swap_rows(gsl_matrix_float * m, const size_t i, const size_t j);
+int gsl_matrix_float_swap_columns(gsl_matrix_float * m, const size_t i, const size_t j);
+int gsl_matrix_float_swap_rowcol(gsl_matrix_float * m, const size_t i, const size_t j);
+int gsl_matrix_float_transpose (gsl_matrix_float * m);
+int gsl_matrix_float_transpose_memcpy (gsl_matrix_float * dest, const gsl_matrix_float * src);
+
+float gsl_matrix_float_max (const gsl_matrix_float * m);
+float gsl_matrix_float_min (const gsl_matrix_float * m);
+void gsl_matrix_float_minmax (const gsl_matrix_float * m, float * min_out, float * max_out);
+
+void gsl_matrix_float_max_index (const gsl_matrix_float * m, size_t * imax, size_t *jmax);
+void gsl_matrix_float_min_index (const gsl_matrix_float * m, size_t * imin, size_t *jmin);
+void gsl_matrix_float_minmax_index (const gsl_matrix_float * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_float_equal (const gsl_matrix_float * a, const gsl_matrix_float * b);
+
+int gsl_matrix_float_isnull (const gsl_matrix_float * m);
+int gsl_matrix_float_ispos (const gsl_matrix_float * m);
+int gsl_matrix_float_isneg (const gsl_matrix_float * m);
+int gsl_matrix_float_isnonneg (const gsl_matrix_float * m);
+
+int gsl_matrix_float_add (gsl_matrix_float * a, const gsl_matrix_float * b);
+int gsl_matrix_float_sub (gsl_matrix_float * a, const gsl_matrix_float * b);
+int gsl_matrix_float_mul_elements (gsl_matrix_float * a, const gsl_matrix_float * b);
+int gsl_matrix_float_div_elements (gsl_matrix_float * a, const gsl_matrix_float * b);
+int gsl_matrix_float_scale (gsl_matrix_float * a, const double x);
+int gsl_matrix_float_add_constant (gsl_matrix_float * a, const double x);
+int gsl_matrix_float_add_diagonal (gsl_matrix_float * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_float_get_row(gsl_vector_float * v, const gsl_matrix_float * m, const size_t i);
+int gsl_matrix_float_get_col(gsl_vector_float * v, const gsl_matrix_float * m, const size_t j);
+int gsl_matrix_float_set_row(gsl_matrix_float * m, const size_t i, const gsl_vector_float * v);
+int gsl_matrix_float_set_col(gsl_matrix_float * m, const size_t j, const gsl_vector_float * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL float gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x);
+INLINE_DECL float * gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j);
+INLINE_DECL const float * gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+float
+gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+float *
+gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (float *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const float *
+gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const float *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_int.h
new file mode 100644
index 00000000..a9b04c1b
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_int.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_INT_H__
+#define __GSL_MATRIX_INT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_int.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ int * data;
+ gsl_block_int * block;
+ int owner;
+} gsl_matrix_int;
+
+typedef struct
+{
+ gsl_matrix_int matrix;
+} _gsl_matrix_int_view;
+
+typedef _gsl_matrix_int_view gsl_matrix_int_view;
+
+typedef struct
+{
+ gsl_matrix_int matrix;
+} _gsl_matrix_int_const_view;
+
+typedef const _gsl_matrix_int_const_view gsl_matrix_int_const_view;
+
+/* Allocation */
+
+gsl_matrix_int *
+gsl_matrix_int_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_int *
+gsl_matrix_int_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_int *
+gsl_matrix_int_alloc_from_block (gsl_block_int * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_int *
+gsl_matrix_int_alloc_from_matrix (gsl_matrix_int * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_int *
+gsl_vector_int_alloc_row_from_matrix (gsl_matrix_int * m,
+ const size_t i);
+
+gsl_vector_int *
+gsl_vector_int_alloc_col_from_matrix (gsl_matrix_int * m,
+ const size_t j);
+
+void gsl_matrix_int_free (gsl_matrix_int * m);
+
+/* Views */
+
+_gsl_matrix_int_view
+gsl_matrix_int_submatrix (gsl_matrix_int * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_int_view
+gsl_matrix_int_row (gsl_matrix_int * m, const size_t i);
+
+_gsl_vector_int_view
+gsl_matrix_int_column (gsl_matrix_int * m, const size_t j);
+
+_gsl_vector_int_view
+gsl_matrix_int_diagonal (gsl_matrix_int * m);
+
+_gsl_vector_int_view
+gsl_matrix_int_subdiagonal (gsl_matrix_int * m, const size_t k);
+
+_gsl_vector_int_view
+gsl_matrix_int_superdiagonal (gsl_matrix_int * m, const size_t k);
+
+_gsl_vector_int_view
+gsl_matrix_int_subrow (gsl_matrix_int * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_int_view
+gsl_matrix_int_subcolumn (gsl_matrix_int * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_int_view
+gsl_matrix_int_view_array (int * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_int_view
+gsl_matrix_int_view_array_with_tda (int * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_int_view
+gsl_matrix_int_view_vector (gsl_vector_int * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_int_view
+gsl_matrix_int_view_vector_with_tda (gsl_vector_int * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_int_const_view
+gsl_matrix_int_const_submatrix (const gsl_matrix_int * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_int_const_view
+gsl_matrix_int_const_row (const gsl_matrix_int * m,
+ const size_t i);
+
+_gsl_vector_int_const_view
+gsl_matrix_int_const_column (const gsl_matrix_int * m,
+ const size_t j);
+
+_gsl_vector_int_const_view
+gsl_matrix_int_const_diagonal (const gsl_matrix_int * m);
+
+_gsl_vector_int_const_view
+gsl_matrix_int_const_subdiagonal (const gsl_matrix_int * m,
+ const size_t k);
+
+_gsl_vector_int_const_view
+gsl_matrix_int_const_superdiagonal (const gsl_matrix_int * m,
+ const size_t k);
+
+_gsl_vector_int_const_view
+gsl_matrix_int_const_subrow (const gsl_matrix_int * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_int_const_view
+gsl_matrix_int_const_subcolumn (const gsl_matrix_int * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_int_const_view
+gsl_matrix_int_const_view_array (const int * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_int_const_view
+gsl_matrix_int_const_view_array_with_tda (const int * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_int_const_view
+gsl_matrix_int_const_view_vector (const gsl_vector_int * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_int_const_view
+gsl_matrix_int_const_view_vector_with_tda (const gsl_vector_int * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_int_set_zero (gsl_matrix_int * m);
+void gsl_matrix_int_set_identity (gsl_matrix_int * m);
+void gsl_matrix_int_set_all (gsl_matrix_int * m, int x);
+
+int gsl_matrix_int_fread (FILE * stream, gsl_matrix_int * m) ;
+int gsl_matrix_int_fwrite (FILE * stream, const gsl_matrix_int * m) ;
+int gsl_matrix_int_fscanf (FILE * stream, gsl_matrix_int * m);
+int gsl_matrix_int_fprintf (FILE * stream, const gsl_matrix_int * m, const char * format);
+
+int gsl_matrix_int_memcpy(gsl_matrix_int * dest, const gsl_matrix_int * src);
+int gsl_matrix_int_swap(gsl_matrix_int * m1, gsl_matrix_int * m2);
+
+int gsl_matrix_int_swap_rows(gsl_matrix_int * m, const size_t i, const size_t j);
+int gsl_matrix_int_swap_columns(gsl_matrix_int * m, const size_t i, const size_t j);
+int gsl_matrix_int_swap_rowcol(gsl_matrix_int * m, const size_t i, const size_t j);
+int gsl_matrix_int_transpose (gsl_matrix_int * m);
+int gsl_matrix_int_transpose_memcpy (gsl_matrix_int * dest, const gsl_matrix_int * src);
+
+int gsl_matrix_int_max (const gsl_matrix_int * m);
+int gsl_matrix_int_min (const gsl_matrix_int * m);
+void gsl_matrix_int_minmax (const gsl_matrix_int * m, int * min_out, int * max_out);
+
+void gsl_matrix_int_max_index (const gsl_matrix_int * m, size_t * imax, size_t *jmax);
+void gsl_matrix_int_min_index (const gsl_matrix_int * m, size_t * imin, size_t *jmin);
+void gsl_matrix_int_minmax_index (const gsl_matrix_int * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_int_equal (const gsl_matrix_int * a, const gsl_matrix_int * b);
+
+int gsl_matrix_int_isnull (const gsl_matrix_int * m);
+int gsl_matrix_int_ispos (const gsl_matrix_int * m);
+int gsl_matrix_int_isneg (const gsl_matrix_int * m);
+int gsl_matrix_int_isnonneg (const gsl_matrix_int * m);
+
+int gsl_matrix_int_add (gsl_matrix_int * a, const gsl_matrix_int * b);
+int gsl_matrix_int_sub (gsl_matrix_int * a, const gsl_matrix_int * b);
+int gsl_matrix_int_mul_elements (gsl_matrix_int * a, const gsl_matrix_int * b);
+int gsl_matrix_int_div_elements (gsl_matrix_int * a, const gsl_matrix_int * b);
+int gsl_matrix_int_scale (gsl_matrix_int * a, const double x);
+int gsl_matrix_int_add_constant (gsl_matrix_int * a, const double x);
+int gsl_matrix_int_add_diagonal (gsl_matrix_int * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_int_get_row(gsl_vector_int * v, const gsl_matrix_int * m, const size_t i);
+int gsl_matrix_int_get_col(gsl_vector_int * v, const gsl_matrix_int * m, const size_t j);
+int gsl_matrix_int_set_row(gsl_matrix_int * m, const size_t i, const gsl_vector_int * v);
+int gsl_matrix_int_set_col(gsl_matrix_int * m, const size_t j, const gsl_vector_int * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL int gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x);
+INLINE_DECL int * gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j);
+INLINE_DECL const int * gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+int
+gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+int *
+gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (int *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const int *
+gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const int *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long.h
new file mode 100644
index 00000000..ff85a18d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_LONG_H__
+#define __GSL_MATRIX_LONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_long.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ long * data;
+ gsl_block_long * block;
+ int owner;
+} gsl_matrix_long;
+
+typedef struct
+{
+ gsl_matrix_long matrix;
+} _gsl_matrix_long_view;
+
+typedef _gsl_matrix_long_view gsl_matrix_long_view;
+
+typedef struct
+{
+ gsl_matrix_long matrix;
+} _gsl_matrix_long_const_view;
+
+typedef const _gsl_matrix_long_const_view gsl_matrix_long_const_view;
+
+/* Allocation */
+
+gsl_matrix_long *
+gsl_matrix_long_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_long *
+gsl_matrix_long_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_long *
+gsl_matrix_long_alloc_from_block (gsl_block_long * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_long *
+gsl_matrix_long_alloc_from_matrix (gsl_matrix_long * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_long *
+gsl_vector_long_alloc_row_from_matrix (gsl_matrix_long * m,
+ const size_t i);
+
+gsl_vector_long *
+gsl_vector_long_alloc_col_from_matrix (gsl_matrix_long * m,
+ const size_t j);
+
+void gsl_matrix_long_free (gsl_matrix_long * m);
+
+/* Views */
+
+_gsl_matrix_long_view
+gsl_matrix_long_submatrix (gsl_matrix_long * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_long_view
+gsl_matrix_long_row (gsl_matrix_long * m, const size_t i);
+
+_gsl_vector_long_view
+gsl_matrix_long_column (gsl_matrix_long * m, const size_t j);
+
+_gsl_vector_long_view
+gsl_matrix_long_diagonal (gsl_matrix_long * m);
+
+_gsl_vector_long_view
+gsl_matrix_long_subdiagonal (gsl_matrix_long * m, const size_t k);
+
+_gsl_vector_long_view
+gsl_matrix_long_superdiagonal (gsl_matrix_long * m, const size_t k);
+
+_gsl_vector_long_view
+gsl_matrix_long_subrow (gsl_matrix_long * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_long_view
+gsl_matrix_long_subcolumn (gsl_matrix_long * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_long_view
+gsl_matrix_long_view_array (long * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_view
+gsl_matrix_long_view_array_with_tda (long * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_long_view
+gsl_matrix_long_view_vector (gsl_vector_long * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_view
+gsl_matrix_long_view_vector_with_tda (gsl_vector_long * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_long_const_view
+gsl_matrix_long_const_submatrix (const gsl_matrix_long * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_long_const_view
+gsl_matrix_long_const_row (const gsl_matrix_long * m,
+ const size_t i);
+
+_gsl_vector_long_const_view
+gsl_matrix_long_const_column (const gsl_matrix_long * m,
+ const size_t j);
+
+_gsl_vector_long_const_view
+gsl_matrix_long_const_diagonal (const gsl_matrix_long * m);
+
+_gsl_vector_long_const_view
+gsl_matrix_long_const_subdiagonal (const gsl_matrix_long * m,
+ const size_t k);
+
+_gsl_vector_long_const_view
+gsl_matrix_long_const_superdiagonal (const gsl_matrix_long * m,
+ const size_t k);
+
+_gsl_vector_long_const_view
+gsl_matrix_long_const_subrow (const gsl_matrix_long * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_long_const_view
+gsl_matrix_long_const_subcolumn (const gsl_matrix_long * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_long_const_view
+gsl_matrix_long_const_view_array (const long * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_const_view
+gsl_matrix_long_const_view_array_with_tda (const long * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_long_const_view
+gsl_matrix_long_const_view_vector (const gsl_vector_long * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_const_view
+gsl_matrix_long_const_view_vector_with_tda (const gsl_vector_long * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_long_set_zero (gsl_matrix_long * m);
+void gsl_matrix_long_set_identity (gsl_matrix_long * m);
+void gsl_matrix_long_set_all (gsl_matrix_long * m, long x);
+
+int gsl_matrix_long_fread (FILE * stream, gsl_matrix_long * m) ;
+int gsl_matrix_long_fwrite (FILE * stream, const gsl_matrix_long * m) ;
+int gsl_matrix_long_fscanf (FILE * stream, gsl_matrix_long * m);
+int gsl_matrix_long_fprintf (FILE * stream, const gsl_matrix_long * m, const char * format);
+
+int gsl_matrix_long_memcpy(gsl_matrix_long * dest, const gsl_matrix_long * src);
+int gsl_matrix_long_swap(gsl_matrix_long * m1, gsl_matrix_long * m2);
+
+int gsl_matrix_long_swap_rows(gsl_matrix_long * m, const size_t i, const size_t j);
+int gsl_matrix_long_swap_columns(gsl_matrix_long * m, const size_t i, const size_t j);
+int gsl_matrix_long_swap_rowcol(gsl_matrix_long * m, const size_t i, const size_t j);
+int gsl_matrix_long_transpose (gsl_matrix_long * m);
+int gsl_matrix_long_transpose_memcpy (gsl_matrix_long * dest, const gsl_matrix_long * src);
+
+long gsl_matrix_long_max (const gsl_matrix_long * m);
+long gsl_matrix_long_min (const gsl_matrix_long * m);
+void gsl_matrix_long_minmax (const gsl_matrix_long * m, long * min_out, long * max_out);
+
+void gsl_matrix_long_max_index (const gsl_matrix_long * m, size_t * imax, size_t *jmax);
+void gsl_matrix_long_min_index (const gsl_matrix_long * m, size_t * imin, size_t *jmin);
+void gsl_matrix_long_minmax_index (const gsl_matrix_long * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_long_equal (const gsl_matrix_long * a, const gsl_matrix_long * b);
+
+int gsl_matrix_long_isnull (const gsl_matrix_long * m);
+int gsl_matrix_long_ispos (const gsl_matrix_long * m);
+int gsl_matrix_long_isneg (const gsl_matrix_long * m);
+int gsl_matrix_long_isnonneg (const gsl_matrix_long * m);
+
+int gsl_matrix_long_add (gsl_matrix_long * a, const gsl_matrix_long * b);
+int gsl_matrix_long_sub (gsl_matrix_long * a, const gsl_matrix_long * b);
+int gsl_matrix_long_mul_elements (gsl_matrix_long * a, const gsl_matrix_long * b);
+int gsl_matrix_long_div_elements (gsl_matrix_long * a, const gsl_matrix_long * b);
+int gsl_matrix_long_scale (gsl_matrix_long * a, const double x);
+int gsl_matrix_long_add_constant (gsl_matrix_long * a, const double x);
+int gsl_matrix_long_add_diagonal (gsl_matrix_long * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_long_get_row(gsl_vector_long * v, const gsl_matrix_long * m, const size_t i);
+int gsl_matrix_long_get_col(gsl_vector_long * v, const gsl_matrix_long * m, const size_t j);
+int gsl_matrix_long_set_row(gsl_matrix_long * m, const size_t i, const gsl_vector_long * v);
+int gsl_matrix_long_set_col(gsl_matrix_long * m, const size_t j, const gsl_vector_long * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL long gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x);
+INLINE_DECL long * gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j);
+INLINE_DECL const long * gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+long
+gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+long *
+gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (long *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const long *
+gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const long *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_LONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long_double.h
new file mode 100644
index 00000000..910091f6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_long_double.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_LONG_DOUBLE_H__
+#define __GSL_MATRIX_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_long_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ long double * data;
+ gsl_block_long_double * block;
+ int owner;
+} gsl_matrix_long_double;
+
+typedef struct
+{
+ gsl_matrix_long_double matrix;
+} _gsl_matrix_long_double_view;
+
+typedef _gsl_matrix_long_double_view gsl_matrix_long_double_view;
+
+typedef struct
+{
+ gsl_matrix_long_double matrix;
+} _gsl_matrix_long_double_const_view;
+
+typedef const _gsl_matrix_long_double_const_view gsl_matrix_long_double_const_view;
+
+/* Allocation */
+
+gsl_matrix_long_double *
+gsl_matrix_long_double_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_long_double *
+gsl_matrix_long_double_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_long_double *
+gsl_matrix_long_double_alloc_from_block (gsl_block_long_double * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_long_double *
+gsl_matrix_long_double_alloc_from_matrix (gsl_matrix_long_double * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_long_double *
+gsl_vector_long_double_alloc_row_from_matrix (gsl_matrix_long_double * m,
+ const size_t i);
+
+gsl_vector_long_double *
+gsl_vector_long_double_alloc_col_from_matrix (gsl_matrix_long_double * m,
+ const size_t j);
+
+void gsl_matrix_long_double_free (gsl_matrix_long_double * m);
+
+/* Views */
+
+_gsl_matrix_long_double_view
+gsl_matrix_long_double_submatrix (gsl_matrix_long_double * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_long_double_view
+gsl_matrix_long_double_row (gsl_matrix_long_double * m, const size_t i);
+
+_gsl_vector_long_double_view
+gsl_matrix_long_double_column (gsl_matrix_long_double * m, const size_t j);
+
+_gsl_vector_long_double_view
+gsl_matrix_long_double_diagonal (gsl_matrix_long_double * m);
+
+_gsl_vector_long_double_view
+gsl_matrix_long_double_subdiagonal (gsl_matrix_long_double * m, const size_t k);
+
+_gsl_vector_long_double_view
+gsl_matrix_long_double_superdiagonal (gsl_matrix_long_double * m, const size_t k);
+
+_gsl_vector_long_double_view
+gsl_matrix_long_double_subrow (gsl_matrix_long_double * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_long_double_view
+gsl_matrix_long_double_subcolumn (gsl_matrix_long_double * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_long_double_view
+gsl_matrix_long_double_view_array (long double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_double_view
+gsl_matrix_long_double_view_array_with_tda (long double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_long_double_view
+gsl_matrix_long_double_view_vector (gsl_vector_long_double * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_double_view
+gsl_matrix_long_double_view_vector_with_tda (gsl_vector_long_double * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_long_double_const_view
+gsl_matrix_long_double_const_submatrix (const gsl_matrix_long_double * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_long_double_const_view
+gsl_matrix_long_double_const_row (const gsl_matrix_long_double * m,
+ const size_t i);
+
+_gsl_vector_long_double_const_view
+gsl_matrix_long_double_const_column (const gsl_matrix_long_double * m,
+ const size_t j);
+
+_gsl_vector_long_double_const_view
+gsl_matrix_long_double_const_diagonal (const gsl_matrix_long_double * m);
+
+_gsl_vector_long_double_const_view
+gsl_matrix_long_double_const_subdiagonal (const gsl_matrix_long_double * m,
+ const size_t k);
+
+_gsl_vector_long_double_const_view
+gsl_matrix_long_double_const_superdiagonal (const gsl_matrix_long_double * m,
+ const size_t k);
+
+_gsl_vector_long_double_const_view
+gsl_matrix_long_double_const_subrow (const gsl_matrix_long_double * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_long_double_const_view
+gsl_matrix_long_double_const_subcolumn (const gsl_matrix_long_double * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_long_double_const_view
+gsl_matrix_long_double_const_view_array (const long double * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_double_const_view
+gsl_matrix_long_double_const_view_array_with_tda (const long double * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_long_double_const_view
+gsl_matrix_long_double_const_view_vector (const gsl_vector_long_double * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_long_double_const_view
+gsl_matrix_long_double_const_view_vector_with_tda (const gsl_vector_long_double * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_long_double_set_zero (gsl_matrix_long_double * m);
+void gsl_matrix_long_double_set_identity (gsl_matrix_long_double * m);
+void gsl_matrix_long_double_set_all (gsl_matrix_long_double * m, long double x);
+
+int gsl_matrix_long_double_fread (FILE * stream, gsl_matrix_long_double * m) ;
+int gsl_matrix_long_double_fwrite (FILE * stream, const gsl_matrix_long_double * m) ;
+int gsl_matrix_long_double_fscanf (FILE * stream, gsl_matrix_long_double * m);
+int gsl_matrix_long_double_fprintf (FILE * stream, const gsl_matrix_long_double * m, const char * format);
+
+int gsl_matrix_long_double_memcpy(gsl_matrix_long_double * dest, const gsl_matrix_long_double * src);
+int gsl_matrix_long_double_swap(gsl_matrix_long_double * m1, gsl_matrix_long_double * m2);
+
+int gsl_matrix_long_double_swap_rows(gsl_matrix_long_double * m, const size_t i, const size_t j);
+int gsl_matrix_long_double_swap_columns(gsl_matrix_long_double * m, const size_t i, const size_t j);
+int gsl_matrix_long_double_swap_rowcol(gsl_matrix_long_double * m, const size_t i, const size_t j);
+int gsl_matrix_long_double_transpose (gsl_matrix_long_double * m);
+int gsl_matrix_long_double_transpose_memcpy (gsl_matrix_long_double * dest, const gsl_matrix_long_double * src);
+
+long double gsl_matrix_long_double_max (const gsl_matrix_long_double * m);
+long double gsl_matrix_long_double_min (const gsl_matrix_long_double * m);
+void gsl_matrix_long_double_minmax (const gsl_matrix_long_double * m, long double * min_out, long double * max_out);
+
+void gsl_matrix_long_double_max_index (const gsl_matrix_long_double * m, size_t * imax, size_t *jmax);
+void gsl_matrix_long_double_min_index (const gsl_matrix_long_double * m, size_t * imin, size_t *jmin);
+void gsl_matrix_long_double_minmax_index (const gsl_matrix_long_double * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_long_double_equal (const gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+
+int gsl_matrix_long_double_isnull (const gsl_matrix_long_double * m);
+int gsl_matrix_long_double_ispos (const gsl_matrix_long_double * m);
+int gsl_matrix_long_double_isneg (const gsl_matrix_long_double * m);
+int gsl_matrix_long_double_isnonneg (const gsl_matrix_long_double * m);
+
+int gsl_matrix_long_double_add (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+int gsl_matrix_long_double_sub (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+int gsl_matrix_long_double_mul_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+int gsl_matrix_long_double_div_elements (gsl_matrix_long_double * a, const gsl_matrix_long_double * b);
+int gsl_matrix_long_double_scale (gsl_matrix_long_double * a, const double x);
+int gsl_matrix_long_double_add_constant (gsl_matrix_long_double * a, const double x);
+int gsl_matrix_long_double_add_diagonal (gsl_matrix_long_double * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_long_double_get_row(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t i);
+int gsl_matrix_long_double_get_col(gsl_vector_long_double * v, const gsl_matrix_long_double * m, const size_t j);
+int gsl_matrix_long_double_set_row(gsl_matrix_long_double * m, const size_t i, const gsl_vector_long_double * v);
+int gsl_matrix_long_double_set_col(gsl_matrix_long_double * m, const size_t j, const gsl_vector_long_double * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL long double gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x);
+INLINE_DECL long double * gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j);
+INLINE_DECL const long double * gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+long double
+gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+long double *
+gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (long double *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const long double *
+gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const long double *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_short.h
new file mode 100644
index 00000000..53e89e6f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_short.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_SHORT_H__
+#define __GSL_MATRIX_SHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_short.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ short * data;
+ gsl_block_short * block;
+ int owner;
+} gsl_matrix_short;
+
+typedef struct
+{
+ gsl_matrix_short matrix;
+} _gsl_matrix_short_view;
+
+typedef _gsl_matrix_short_view gsl_matrix_short_view;
+
+typedef struct
+{
+ gsl_matrix_short matrix;
+} _gsl_matrix_short_const_view;
+
+typedef const _gsl_matrix_short_const_view gsl_matrix_short_const_view;
+
+/* Allocation */
+
+gsl_matrix_short *
+gsl_matrix_short_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_short *
+gsl_matrix_short_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_short *
+gsl_matrix_short_alloc_from_block (gsl_block_short * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_short *
+gsl_matrix_short_alloc_from_matrix (gsl_matrix_short * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_short *
+gsl_vector_short_alloc_row_from_matrix (gsl_matrix_short * m,
+ const size_t i);
+
+gsl_vector_short *
+gsl_vector_short_alloc_col_from_matrix (gsl_matrix_short * m,
+ const size_t j);
+
+void gsl_matrix_short_free (gsl_matrix_short * m);
+
+/* Views */
+
+_gsl_matrix_short_view
+gsl_matrix_short_submatrix (gsl_matrix_short * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_short_view
+gsl_matrix_short_row (gsl_matrix_short * m, const size_t i);
+
+_gsl_vector_short_view
+gsl_matrix_short_column (gsl_matrix_short * m, const size_t j);
+
+_gsl_vector_short_view
+gsl_matrix_short_diagonal (gsl_matrix_short * m);
+
+_gsl_vector_short_view
+gsl_matrix_short_subdiagonal (gsl_matrix_short * m, const size_t k);
+
+_gsl_vector_short_view
+gsl_matrix_short_superdiagonal (gsl_matrix_short * m, const size_t k);
+
+_gsl_vector_short_view
+gsl_matrix_short_subrow (gsl_matrix_short * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_short_view
+gsl_matrix_short_subcolumn (gsl_matrix_short * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_short_view
+gsl_matrix_short_view_array (short * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_short_view
+gsl_matrix_short_view_array_with_tda (short * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_short_view
+gsl_matrix_short_view_vector (gsl_vector_short * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_short_view
+gsl_matrix_short_view_vector_with_tda (gsl_vector_short * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_short_const_view
+gsl_matrix_short_const_submatrix (const gsl_matrix_short * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_short_const_view
+gsl_matrix_short_const_row (const gsl_matrix_short * m,
+ const size_t i);
+
+_gsl_vector_short_const_view
+gsl_matrix_short_const_column (const gsl_matrix_short * m,
+ const size_t j);
+
+_gsl_vector_short_const_view
+gsl_matrix_short_const_diagonal (const gsl_matrix_short * m);
+
+_gsl_vector_short_const_view
+gsl_matrix_short_const_subdiagonal (const gsl_matrix_short * m,
+ const size_t k);
+
+_gsl_vector_short_const_view
+gsl_matrix_short_const_superdiagonal (const gsl_matrix_short * m,
+ const size_t k);
+
+_gsl_vector_short_const_view
+gsl_matrix_short_const_subrow (const gsl_matrix_short * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_short_const_view
+gsl_matrix_short_const_subcolumn (const gsl_matrix_short * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_short_const_view
+gsl_matrix_short_const_view_array (const short * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_short_const_view
+gsl_matrix_short_const_view_array_with_tda (const short * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_short_const_view
+gsl_matrix_short_const_view_vector (const gsl_vector_short * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_short_const_view
+gsl_matrix_short_const_view_vector_with_tda (const gsl_vector_short * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_short_set_zero (gsl_matrix_short * m);
+void gsl_matrix_short_set_identity (gsl_matrix_short * m);
+void gsl_matrix_short_set_all (gsl_matrix_short * m, short x);
+
+int gsl_matrix_short_fread (FILE * stream, gsl_matrix_short * m) ;
+int gsl_matrix_short_fwrite (FILE * stream, const gsl_matrix_short * m) ;
+int gsl_matrix_short_fscanf (FILE * stream, gsl_matrix_short * m);
+int gsl_matrix_short_fprintf (FILE * stream, const gsl_matrix_short * m, const char * format);
+
+int gsl_matrix_short_memcpy(gsl_matrix_short * dest, const gsl_matrix_short * src);
+int gsl_matrix_short_swap(gsl_matrix_short * m1, gsl_matrix_short * m2);
+
+int gsl_matrix_short_swap_rows(gsl_matrix_short * m, const size_t i, const size_t j);
+int gsl_matrix_short_swap_columns(gsl_matrix_short * m, const size_t i, const size_t j);
+int gsl_matrix_short_swap_rowcol(gsl_matrix_short * m, const size_t i, const size_t j);
+int gsl_matrix_short_transpose (gsl_matrix_short * m);
+int gsl_matrix_short_transpose_memcpy (gsl_matrix_short * dest, const gsl_matrix_short * src);
+
+short gsl_matrix_short_max (const gsl_matrix_short * m);
+short gsl_matrix_short_min (const gsl_matrix_short * m);
+void gsl_matrix_short_minmax (const gsl_matrix_short * m, short * min_out, short * max_out);
+
+void gsl_matrix_short_max_index (const gsl_matrix_short * m, size_t * imax, size_t *jmax);
+void gsl_matrix_short_min_index (const gsl_matrix_short * m, size_t * imin, size_t *jmin);
+void gsl_matrix_short_minmax_index (const gsl_matrix_short * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_short_equal (const gsl_matrix_short * a, const gsl_matrix_short * b);
+
+int gsl_matrix_short_isnull (const gsl_matrix_short * m);
+int gsl_matrix_short_ispos (const gsl_matrix_short * m);
+int gsl_matrix_short_isneg (const gsl_matrix_short * m);
+int gsl_matrix_short_isnonneg (const gsl_matrix_short * m);
+
+int gsl_matrix_short_add (gsl_matrix_short * a, const gsl_matrix_short * b);
+int gsl_matrix_short_sub (gsl_matrix_short * a, const gsl_matrix_short * b);
+int gsl_matrix_short_mul_elements (gsl_matrix_short * a, const gsl_matrix_short * b);
+int gsl_matrix_short_div_elements (gsl_matrix_short * a, const gsl_matrix_short * b);
+int gsl_matrix_short_scale (gsl_matrix_short * a, const double x);
+int gsl_matrix_short_add_constant (gsl_matrix_short * a, const double x);
+int gsl_matrix_short_add_diagonal (gsl_matrix_short * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_short_get_row(gsl_vector_short * v, const gsl_matrix_short * m, const size_t i);
+int gsl_matrix_short_get_col(gsl_vector_short * v, const gsl_matrix_short * m, const size_t j);
+int gsl_matrix_short_set_row(gsl_matrix_short * m, const size_t i, const gsl_vector_short * v);
+int gsl_matrix_short_set_col(gsl_matrix_short * m, const size_t j, const gsl_vector_short * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL short gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x);
+INLINE_DECL short * gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j);
+INLINE_DECL const short * gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+short
+gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+short *
+gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (short *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const short *
+gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const short *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_SHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uchar.h
new file mode 100644
index 00000000..0ab540ff
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uchar.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_UCHAR_H__
+#define __GSL_MATRIX_UCHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_uchar.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ unsigned char * data;
+ gsl_block_uchar * block;
+ int owner;
+} gsl_matrix_uchar;
+
+typedef struct
+{
+ gsl_matrix_uchar matrix;
+} _gsl_matrix_uchar_view;
+
+typedef _gsl_matrix_uchar_view gsl_matrix_uchar_view;
+
+typedef struct
+{
+ gsl_matrix_uchar matrix;
+} _gsl_matrix_uchar_const_view;
+
+typedef const _gsl_matrix_uchar_const_view gsl_matrix_uchar_const_view;
+
+/* Allocation */
+
+gsl_matrix_uchar *
+gsl_matrix_uchar_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_uchar *
+gsl_matrix_uchar_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_uchar *
+gsl_matrix_uchar_alloc_from_block (gsl_block_uchar * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_uchar *
+gsl_matrix_uchar_alloc_from_matrix (gsl_matrix_uchar * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_uchar *
+gsl_vector_uchar_alloc_row_from_matrix (gsl_matrix_uchar * m,
+ const size_t i);
+
+gsl_vector_uchar *
+gsl_vector_uchar_alloc_col_from_matrix (gsl_matrix_uchar * m,
+ const size_t j);
+
+void gsl_matrix_uchar_free (gsl_matrix_uchar * m);
+
+/* Views */
+
+_gsl_matrix_uchar_view
+gsl_matrix_uchar_submatrix (gsl_matrix_uchar * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_uchar_view
+gsl_matrix_uchar_row (gsl_matrix_uchar * m, const size_t i);
+
+_gsl_vector_uchar_view
+gsl_matrix_uchar_column (gsl_matrix_uchar * m, const size_t j);
+
+_gsl_vector_uchar_view
+gsl_matrix_uchar_diagonal (gsl_matrix_uchar * m);
+
+_gsl_vector_uchar_view
+gsl_matrix_uchar_subdiagonal (gsl_matrix_uchar * m, const size_t k);
+
+_gsl_vector_uchar_view
+gsl_matrix_uchar_superdiagonal (gsl_matrix_uchar * m, const size_t k);
+
+_gsl_vector_uchar_view
+gsl_matrix_uchar_subrow (gsl_matrix_uchar * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_uchar_view
+gsl_matrix_uchar_subcolumn (gsl_matrix_uchar * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_uchar_view
+gsl_matrix_uchar_view_array (unsigned char * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uchar_view
+gsl_matrix_uchar_view_array_with_tda (unsigned char * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_uchar_view
+gsl_matrix_uchar_view_vector (gsl_vector_uchar * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uchar_view
+gsl_matrix_uchar_view_vector_with_tda (gsl_vector_uchar * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_uchar_const_view
+gsl_matrix_uchar_const_submatrix (const gsl_matrix_uchar * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_uchar_const_view
+gsl_matrix_uchar_const_row (const gsl_matrix_uchar * m,
+ const size_t i);
+
+_gsl_vector_uchar_const_view
+gsl_matrix_uchar_const_column (const gsl_matrix_uchar * m,
+ const size_t j);
+
+_gsl_vector_uchar_const_view
+gsl_matrix_uchar_const_diagonal (const gsl_matrix_uchar * m);
+
+_gsl_vector_uchar_const_view
+gsl_matrix_uchar_const_subdiagonal (const gsl_matrix_uchar * m,
+ const size_t k);
+
+_gsl_vector_uchar_const_view
+gsl_matrix_uchar_const_superdiagonal (const gsl_matrix_uchar * m,
+ const size_t k);
+
+_gsl_vector_uchar_const_view
+gsl_matrix_uchar_const_subrow (const gsl_matrix_uchar * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_uchar_const_view
+gsl_matrix_uchar_const_subcolumn (const gsl_matrix_uchar * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_uchar_const_view
+gsl_matrix_uchar_const_view_array (const unsigned char * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uchar_const_view
+gsl_matrix_uchar_const_view_array_with_tda (const unsigned char * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_uchar_const_view
+gsl_matrix_uchar_const_view_vector (const gsl_vector_uchar * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uchar_const_view
+gsl_matrix_uchar_const_view_vector_with_tda (const gsl_vector_uchar * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_uchar_set_zero (gsl_matrix_uchar * m);
+void gsl_matrix_uchar_set_identity (gsl_matrix_uchar * m);
+void gsl_matrix_uchar_set_all (gsl_matrix_uchar * m, unsigned char x);
+
+int gsl_matrix_uchar_fread (FILE * stream, gsl_matrix_uchar * m) ;
+int gsl_matrix_uchar_fwrite (FILE * stream, const gsl_matrix_uchar * m) ;
+int gsl_matrix_uchar_fscanf (FILE * stream, gsl_matrix_uchar * m);
+int gsl_matrix_uchar_fprintf (FILE * stream, const gsl_matrix_uchar * m, const char * format);
+
+int gsl_matrix_uchar_memcpy(gsl_matrix_uchar * dest, const gsl_matrix_uchar * src);
+int gsl_matrix_uchar_swap(gsl_matrix_uchar * m1, gsl_matrix_uchar * m2);
+
+int gsl_matrix_uchar_swap_rows(gsl_matrix_uchar * m, const size_t i, const size_t j);
+int gsl_matrix_uchar_swap_columns(gsl_matrix_uchar * m, const size_t i, const size_t j);
+int gsl_matrix_uchar_swap_rowcol(gsl_matrix_uchar * m, const size_t i, const size_t j);
+int gsl_matrix_uchar_transpose (gsl_matrix_uchar * m);
+int gsl_matrix_uchar_transpose_memcpy (gsl_matrix_uchar * dest, const gsl_matrix_uchar * src);
+
+unsigned char gsl_matrix_uchar_max (const gsl_matrix_uchar * m);
+unsigned char gsl_matrix_uchar_min (const gsl_matrix_uchar * m);
+void gsl_matrix_uchar_minmax (const gsl_matrix_uchar * m, unsigned char * min_out, unsigned char * max_out);
+
+void gsl_matrix_uchar_max_index (const gsl_matrix_uchar * m, size_t * imax, size_t *jmax);
+void gsl_matrix_uchar_min_index (const gsl_matrix_uchar * m, size_t * imin, size_t *jmin);
+void gsl_matrix_uchar_minmax_index (const gsl_matrix_uchar * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_uchar_equal (const gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+
+int gsl_matrix_uchar_isnull (const gsl_matrix_uchar * m);
+int gsl_matrix_uchar_ispos (const gsl_matrix_uchar * m);
+int gsl_matrix_uchar_isneg (const gsl_matrix_uchar * m);
+int gsl_matrix_uchar_isnonneg (const gsl_matrix_uchar * m);
+
+int gsl_matrix_uchar_add (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+int gsl_matrix_uchar_sub (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+int gsl_matrix_uchar_mul_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+int gsl_matrix_uchar_div_elements (gsl_matrix_uchar * a, const gsl_matrix_uchar * b);
+int gsl_matrix_uchar_scale (gsl_matrix_uchar * a, const double x);
+int gsl_matrix_uchar_add_constant (gsl_matrix_uchar * a, const double x);
+int gsl_matrix_uchar_add_diagonal (gsl_matrix_uchar * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_uchar_get_row(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t i);
+int gsl_matrix_uchar_get_col(gsl_vector_uchar * v, const gsl_matrix_uchar * m, const size_t j);
+int gsl_matrix_uchar_set_row(gsl_matrix_uchar * m, const size_t i, const gsl_vector_uchar * v);
+int gsl_matrix_uchar_set_col(gsl_matrix_uchar * m, const size_t j, const gsl_vector_uchar * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL unsigned char gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x);
+INLINE_DECL unsigned char * gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j);
+INLINE_DECL const unsigned char * gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+unsigned char
+gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+unsigned char *
+gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (unsigned char *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const unsigned char *
+gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const unsigned char *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_UCHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uint.h
new file mode 100644
index 00000000..abb26702
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_uint.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_UINT_H__
+#define __GSL_MATRIX_UINT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_uint.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ unsigned int * data;
+ gsl_block_uint * block;
+ int owner;
+} gsl_matrix_uint;
+
+typedef struct
+{
+ gsl_matrix_uint matrix;
+} _gsl_matrix_uint_view;
+
+typedef _gsl_matrix_uint_view gsl_matrix_uint_view;
+
+typedef struct
+{
+ gsl_matrix_uint matrix;
+} _gsl_matrix_uint_const_view;
+
+typedef const _gsl_matrix_uint_const_view gsl_matrix_uint_const_view;
+
+/* Allocation */
+
+gsl_matrix_uint *
+gsl_matrix_uint_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_uint *
+gsl_matrix_uint_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_uint *
+gsl_matrix_uint_alloc_from_block (gsl_block_uint * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_uint *
+gsl_matrix_uint_alloc_from_matrix (gsl_matrix_uint * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_uint *
+gsl_vector_uint_alloc_row_from_matrix (gsl_matrix_uint * m,
+ const size_t i);
+
+gsl_vector_uint *
+gsl_vector_uint_alloc_col_from_matrix (gsl_matrix_uint * m,
+ const size_t j);
+
+void gsl_matrix_uint_free (gsl_matrix_uint * m);
+
+/* Views */
+
+_gsl_matrix_uint_view
+gsl_matrix_uint_submatrix (gsl_matrix_uint * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_uint_view
+gsl_matrix_uint_row (gsl_matrix_uint * m, const size_t i);
+
+_gsl_vector_uint_view
+gsl_matrix_uint_column (gsl_matrix_uint * m, const size_t j);
+
+_gsl_vector_uint_view
+gsl_matrix_uint_diagonal (gsl_matrix_uint * m);
+
+_gsl_vector_uint_view
+gsl_matrix_uint_subdiagonal (gsl_matrix_uint * m, const size_t k);
+
+_gsl_vector_uint_view
+gsl_matrix_uint_superdiagonal (gsl_matrix_uint * m, const size_t k);
+
+_gsl_vector_uint_view
+gsl_matrix_uint_subrow (gsl_matrix_uint * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_uint_view
+gsl_matrix_uint_subcolumn (gsl_matrix_uint * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_uint_view
+gsl_matrix_uint_view_array (unsigned int * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uint_view
+gsl_matrix_uint_view_array_with_tda (unsigned int * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_uint_view
+gsl_matrix_uint_view_vector (gsl_vector_uint * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uint_view
+gsl_matrix_uint_view_vector_with_tda (gsl_vector_uint * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_uint_const_view
+gsl_matrix_uint_const_submatrix (const gsl_matrix_uint * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_uint_const_view
+gsl_matrix_uint_const_row (const gsl_matrix_uint * m,
+ const size_t i);
+
+_gsl_vector_uint_const_view
+gsl_matrix_uint_const_column (const gsl_matrix_uint * m,
+ const size_t j);
+
+_gsl_vector_uint_const_view
+gsl_matrix_uint_const_diagonal (const gsl_matrix_uint * m);
+
+_gsl_vector_uint_const_view
+gsl_matrix_uint_const_subdiagonal (const gsl_matrix_uint * m,
+ const size_t k);
+
+_gsl_vector_uint_const_view
+gsl_matrix_uint_const_superdiagonal (const gsl_matrix_uint * m,
+ const size_t k);
+
+_gsl_vector_uint_const_view
+gsl_matrix_uint_const_subrow (const gsl_matrix_uint * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_uint_const_view
+gsl_matrix_uint_const_subcolumn (const gsl_matrix_uint * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_uint_const_view
+gsl_matrix_uint_const_view_array (const unsigned int * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uint_const_view
+gsl_matrix_uint_const_view_array_with_tda (const unsigned int * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_uint_const_view
+gsl_matrix_uint_const_view_vector (const gsl_vector_uint * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_uint_const_view
+gsl_matrix_uint_const_view_vector_with_tda (const gsl_vector_uint * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_uint_set_zero (gsl_matrix_uint * m);
+void gsl_matrix_uint_set_identity (gsl_matrix_uint * m);
+void gsl_matrix_uint_set_all (gsl_matrix_uint * m, unsigned int x);
+
+int gsl_matrix_uint_fread (FILE * stream, gsl_matrix_uint * m) ;
+int gsl_matrix_uint_fwrite (FILE * stream, const gsl_matrix_uint * m) ;
+int gsl_matrix_uint_fscanf (FILE * stream, gsl_matrix_uint * m);
+int gsl_matrix_uint_fprintf (FILE * stream, const gsl_matrix_uint * m, const char * format);
+
+int gsl_matrix_uint_memcpy(gsl_matrix_uint * dest, const gsl_matrix_uint * src);
+int gsl_matrix_uint_swap(gsl_matrix_uint * m1, gsl_matrix_uint * m2);
+
+int gsl_matrix_uint_swap_rows(gsl_matrix_uint * m, const size_t i, const size_t j);
+int gsl_matrix_uint_swap_columns(gsl_matrix_uint * m, const size_t i, const size_t j);
+int gsl_matrix_uint_swap_rowcol(gsl_matrix_uint * m, const size_t i, const size_t j);
+int gsl_matrix_uint_transpose (gsl_matrix_uint * m);
+int gsl_matrix_uint_transpose_memcpy (gsl_matrix_uint * dest, const gsl_matrix_uint * src);
+
+unsigned int gsl_matrix_uint_max (const gsl_matrix_uint * m);
+unsigned int gsl_matrix_uint_min (const gsl_matrix_uint * m);
+void gsl_matrix_uint_minmax (const gsl_matrix_uint * m, unsigned int * min_out, unsigned int * max_out);
+
+void gsl_matrix_uint_max_index (const gsl_matrix_uint * m, size_t * imax, size_t *jmax);
+void gsl_matrix_uint_min_index (const gsl_matrix_uint * m, size_t * imin, size_t *jmin);
+void gsl_matrix_uint_minmax_index (const gsl_matrix_uint * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_uint_equal (const gsl_matrix_uint * a, const gsl_matrix_uint * b);
+
+int gsl_matrix_uint_isnull (const gsl_matrix_uint * m);
+int gsl_matrix_uint_ispos (const gsl_matrix_uint * m);
+int gsl_matrix_uint_isneg (const gsl_matrix_uint * m);
+int gsl_matrix_uint_isnonneg (const gsl_matrix_uint * m);
+
+int gsl_matrix_uint_add (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+int gsl_matrix_uint_sub (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+int gsl_matrix_uint_mul_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+int gsl_matrix_uint_div_elements (gsl_matrix_uint * a, const gsl_matrix_uint * b);
+int gsl_matrix_uint_scale (gsl_matrix_uint * a, const double x);
+int gsl_matrix_uint_add_constant (gsl_matrix_uint * a, const double x);
+int gsl_matrix_uint_add_diagonal (gsl_matrix_uint * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_uint_get_row(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t i);
+int gsl_matrix_uint_get_col(gsl_vector_uint * v, const gsl_matrix_uint * m, const size_t j);
+int gsl_matrix_uint_set_row(gsl_matrix_uint * m, const size_t i, const gsl_vector_uint * v);
+int gsl_matrix_uint_set_col(gsl_matrix_uint * m, const size_t j, const gsl_vector_uint * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL unsigned int gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x);
+INLINE_DECL unsigned int * gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j);
+INLINE_DECL const unsigned int * gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+unsigned int
+gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+unsigned int *
+gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (unsigned int *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const unsigned int *
+gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const unsigned int *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_UINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ulong.h
new file mode 100644
index 00000000..2424068f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ulong.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_ULONG_H__
+#define __GSL_MATRIX_ULONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_ulong.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ unsigned long * data;
+ gsl_block_ulong * block;
+ int owner;
+} gsl_matrix_ulong;
+
+typedef struct
+{
+ gsl_matrix_ulong matrix;
+} _gsl_matrix_ulong_view;
+
+typedef _gsl_matrix_ulong_view gsl_matrix_ulong_view;
+
+typedef struct
+{
+ gsl_matrix_ulong matrix;
+} _gsl_matrix_ulong_const_view;
+
+typedef const _gsl_matrix_ulong_const_view gsl_matrix_ulong_const_view;
+
+/* Allocation */
+
+gsl_matrix_ulong *
+gsl_matrix_ulong_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_ulong *
+gsl_matrix_ulong_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_ulong *
+gsl_matrix_ulong_alloc_from_block (gsl_block_ulong * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_ulong *
+gsl_matrix_ulong_alloc_from_matrix (gsl_matrix_ulong * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_ulong *
+gsl_vector_ulong_alloc_row_from_matrix (gsl_matrix_ulong * m,
+ const size_t i);
+
+gsl_vector_ulong *
+gsl_vector_ulong_alloc_col_from_matrix (gsl_matrix_ulong * m,
+ const size_t j);
+
+void gsl_matrix_ulong_free (gsl_matrix_ulong * m);
+
+/* Views */
+
+_gsl_matrix_ulong_view
+gsl_matrix_ulong_submatrix (gsl_matrix_ulong * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_ulong_view
+gsl_matrix_ulong_row (gsl_matrix_ulong * m, const size_t i);
+
+_gsl_vector_ulong_view
+gsl_matrix_ulong_column (gsl_matrix_ulong * m, const size_t j);
+
+_gsl_vector_ulong_view
+gsl_matrix_ulong_diagonal (gsl_matrix_ulong * m);
+
+_gsl_vector_ulong_view
+gsl_matrix_ulong_subdiagonal (gsl_matrix_ulong * m, const size_t k);
+
+_gsl_vector_ulong_view
+gsl_matrix_ulong_superdiagonal (gsl_matrix_ulong * m, const size_t k);
+
+_gsl_vector_ulong_view
+gsl_matrix_ulong_subrow (gsl_matrix_ulong * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_ulong_view
+gsl_matrix_ulong_subcolumn (gsl_matrix_ulong * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_ulong_view
+gsl_matrix_ulong_view_array (unsigned long * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ulong_view
+gsl_matrix_ulong_view_array_with_tda (unsigned long * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_ulong_view
+gsl_matrix_ulong_view_vector (gsl_vector_ulong * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ulong_view
+gsl_matrix_ulong_view_vector_with_tda (gsl_vector_ulong * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_ulong_const_view
+gsl_matrix_ulong_const_submatrix (const gsl_matrix_ulong * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_ulong_const_view
+gsl_matrix_ulong_const_row (const gsl_matrix_ulong * m,
+ const size_t i);
+
+_gsl_vector_ulong_const_view
+gsl_matrix_ulong_const_column (const gsl_matrix_ulong * m,
+ const size_t j);
+
+_gsl_vector_ulong_const_view
+gsl_matrix_ulong_const_diagonal (const gsl_matrix_ulong * m);
+
+_gsl_vector_ulong_const_view
+gsl_matrix_ulong_const_subdiagonal (const gsl_matrix_ulong * m,
+ const size_t k);
+
+_gsl_vector_ulong_const_view
+gsl_matrix_ulong_const_superdiagonal (const gsl_matrix_ulong * m,
+ const size_t k);
+
+_gsl_vector_ulong_const_view
+gsl_matrix_ulong_const_subrow (const gsl_matrix_ulong * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_ulong_const_view
+gsl_matrix_ulong_const_subcolumn (const gsl_matrix_ulong * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_ulong_const_view
+gsl_matrix_ulong_const_view_array (const unsigned long * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ulong_const_view
+gsl_matrix_ulong_const_view_array_with_tda (const unsigned long * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_ulong_const_view
+gsl_matrix_ulong_const_view_vector (const gsl_vector_ulong * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ulong_const_view
+gsl_matrix_ulong_const_view_vector_with_tda (const gsl_vector_ulong * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_ulong_set_zero (gsl_matrix_ulong * m);
+void gsl_matrix_ulong_set_identity (gsl_matrix_ulong * m);
+void gsl_matrix_ulong_set_all (gsl_matrix_ulong * m, unsigned long x);
+
+int gsl_matrix_ulong_fread (FILE * stream, gsl_matrix_ulong * m) ;
+int gsl_matrix_ulong_fwrite (FILE * stream, const gsl_matrix_ulong * m) ;
+int gsl_matrix_ulong_fscanf (FILE * stream, gsl_matrix_ulong * m);
+int gsl_matrix_ulong_fprintf (FILE * stream, const gsl_matrix_ulong * m, const char * format);
+
+int gsl_matrix_ulong_memcpy(gsl_matrix_ulong * dest, const gsl_matrix_ulong * src);
+int gsl_matrix_ulong_swap(gsl_matrix_ulong * m1, gsl_matrix_ulong * m2);
+
+int gsl_matrix_ulong_swap_rows(gsl_matrix_ulong * m, const size_t i, const size_t j);
+int gsl_matrix_ulong_swap_columns(gsl_matrix_ulong * m, const size_t i, const size_t j);
+int gsl_matrix_ulong_swap_rowcol(gsl_matrix_ulong * m, const size_t i, const size_t j);
+int gsl_matrix_ulong_transpose (gsl_matrix_ulong * m);
+int gsl_matrix_ulong_transpose_memcpy (gsl_matrix_ulong * dest, const gsl_matrix_ulong * src);
+
+unsigned long gsl_matrix_ulong_max (const gsl_matrix_ulong * m);
+unsigned long gsl_matrix_ulong_min (const gsl_matrix_ulong * m);
+void gsl_matrix_ulong_minmax (const gsl_matrix_ulong * m, unsigned long * min_out, unsigned long * max_out);
+
+void gsl_matrix_ulong_max_index (const gsl_matrix_ulong * m, size_t * imax, size_t *jmax);
+void gsl_matrix_ulong_min_index (const gsl_matrix_ulong * m, size_t * imin, size_t *jmin);
+void gsl_matrix_ulong_minmax_index (const gsl_matrix_ulong * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_ulong_equal (const gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+
+int gsl_matrix_ulong_isnull (const gsl_matrix_ulong * m);
+int gsl_matrix_ulong_ispos (const gsl_matrix_ulong * m);
+int gsl_matrix_ulong_isneg (const gsl_matrix_ulong * m);
+int gsl_matrix_ulong_isnonneg (const gsl_matrix_ulong * m);
+
+int gsl_matrix_ulong_add (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+int gsl_matrix_ulong_sub (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+int gsl_matrix_ulong_mul_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+int gsl_matrix_ulong_div_elements (gsl_matrix_ulong * a, const gsl_matrix_ulong * b);
+int gsl_matrix_ulong_scale (gsl_matrix_ulong * a, const double x);
+int gsl_matrix_ulong_add_constant (gsl_matrix_ulong * a, const double x);
+int gsl_matrix_ulong_add_diagonal (gsl_matrix_ulong * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_ulong_get_row(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t i);
+int gsl_matrix_ulong_get_col(gsl_vector_ulong * v, const gsl_matrix_ulong * m, const size_t j);
+int gsl_matrix_ulong_set_row(gsl_matrix_ulong * m, const size_t i, const gsl_vector_ulong * v);
+int gsl_matrix_ulong_set_col(gsl_matrix_ulong * m, const size_t j, const gsl_vector_ulong * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL unsigned long gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x);
+INLINE_DECL unsigned long * gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j);
+INLINE_DECL const unsigned long * gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+unsigned long
+gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+unsigned long *
+gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (unsigned long *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const unsigned long *
+gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const unsigned long *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_ULONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ushort.h
new file mode 100644
index 00000000..422b3948
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_matrix_ushort.h
@@ -0,0 +1,350 @@
+/* matrix/gsl_matrix_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MATRIX_USHORT_H__
+#define __GSL_MATRIX_USHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_ushort.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size1;
+ size_t size2;
+ size_t tda;
+ unsigned short * data;
+ gsl_block_ushort * block;
+ int owner;
+} gsl_matrix_ushort;
+
+typedef struct
+{
+ gsl_matrix_ushort matrix;
+} _gsl_matrix_ushort_view;
+
+typedef _gsl_matrix_ushort_view gsl_matrix_ushort_view;
+
+typedef struct
+{
+ gsl_matrix_ushort matrix;
+} _gsl_matrix_ushort_const_view;
+
+typedef const _gsl_matrix_ushort_const_view gsl_matrix_ushort_const_view;
+
+/* Allocation */
+
+gsl_matrix_ushort *
+gsl_matrix_ushort_alloc (const size_t n1, const size_t n2);
+
+gsl_matrix_ushort *
+gsl_matrix_ushort_calloc (const size_t n1, const size_t n2);
+
+gsl_matrix_ushort *
+gsl_matrix_ushort_alloc_from_block (gsl_block_ushort * b,
+ const size_t offset,
+ const size_t n1,
+ const size_t n2,
+ const size_t d2);
+
+gsl_matrix_ushort *
+gsl_matrix_ushort_alloc_from_matrix (gsl_matrix_ushort * m,
+ const size_t k1,
+ const size_t k2,
+ const size_t n1,
+ const size_t n2);
+
+gsl_vector_ushort *
+gsl_vector_ushort_alloc_row_from_matrix (gsl_matrix_ushort * m,
+ const size_t i);
+
+gsl_vector_ushort *
+gsl_vector_ushort_alloc_col_from_matrix (gsl_matrix_ushort * m,
+ const size_t j);
+
+void gsl_matrix_ushort_free (gsl_matrix_ushort * m);
+
+/* Views */
+
+_gsl_matrix_ushort_view
+gsl_matrix_ushort_submatrix (gsl_matrix_ushort * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_ushort_view
+gsl_matrix_ushort_row (gsl_matrix_ushort * m, const size_t i);
+
+_gsl_vector_ushort_view
+gsl_matrix_ushort_column (gsl_matrix_ushort * m, const size_t j);
+
+_gsl_vector_ushort_view
+gsl_matrix_ushort_diagonal (gsl_matrix_ushort * m);
+
+_gsl_vector_ushort_view
+gsl_matrix_ushort_subdiagonal (gsl_matrix_ushort * m, const size_t k);
+
+_gsl_vector_ushort_view
+gsl_matrix_ushort_superdiagonal (gsl_matrix_ushort * m, const size_t k);
+
+_gsl_vector_ushort_view
+gsl_matrix_ushort_subrow (gsl_matrix_ushort * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_ushort_view
+gsl_matrix_ushort_subcolumn (gsl_matrix_ushort * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_ushort_view
+gsl_matrix_ushort_view_array (unsigned short * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ushort_view
+gsl_matrix_ushort_view_array_with_tda (unsigned short * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_ushort_view
+gsl_matrix_ushort_view_vector (gsl_vector_ushort * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ushort_view
+gsl_matrix_ushort_view_vector_with_tda (gsl_vector_ushort * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+
+_gsl_matrix_ushort_const_view
+gsl_matrix_ushort_const_submatrix (const gsl_matrix_ushort * m,
+ const size_t i, const size_t j,
+ const size_t n1, const size_t n2);
+
+_gsl_vector_ushort_const_view
+gsl_matrix_ushort_const_row (const gsl_matrix_ushort * m,
+ const size_t i);
+
+_gsl_vector_ushort_const_view
+gsl_matrix_ushort_const_column (const gsl_matrix_ushort * m,
+ const size_t j);
+
+_gsl_vector_ushort_const_view
+gsl_matrix_ushort_const_diagonal (const gsl_matrix_ushort * m);
+
+_gsl_vector_ushort_const_view
+gsl_matrix_ushort_const_subdiagonal (const gsl_matrix_ushort * m,
+ const size_t k);
+
+_gsl_vector_ushort_const_view
+gsl_matrix_ushort_const_superdiagonal (const gsl_matrix_ushort * m,
+ const size_t k);
+
+_gsl_vector_ushort_const_view
+gsl_matrix_ushort_const_subrow (const gsl_matrix_ushort * m, const size_t i,
+ const size_t offset, const size_t n);
+
+_gsl_vector_ushort_const_view
+gsl_matrix_ushort_const_subcolumn (const gsl_matrix_ushort * m, const size_t j,
+ const size_t offset, const size_t n);
+
+_gsl_matrix_ushort_const_view
+gsl_matrix_ushort_const_view_array (const unsigned short * base,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ushort_const_view
+gsl_matrix_ushort_const_view_array_with_tda (const unsigned short * base,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+_gsl_matrix_ushort_const_view
+gsl_matrix_ushort_const_view_vector (const gsl_vector_ushort * v,
+ const size_t n1,
+ const size_t n2);
+
+_gsl_matrix_ushort_const_view
+gsl_matrix_ushort_const_view_vector_with_tda (const gsl_vector_ushort * v,
+ const size_t n1,
+ const size_t n2,
+ const size_t tda);
+
+/* Operations */
+
+void gsl_matrix_ushort_set_zero (gsl_matrix_ushort * m);
+void gsl_matrix_ushort_set_identity (gsl_matrix_ushort * m);
+void gsl_matrix_ushort_set_all (gsl_matrix_ushort * m, unsigned short x);
+
+int gsl_matrix_ushort_fread (FILE * stream, gsl_matrix_ushort * m) ;
+int gsl_matrix_ushort_fwrite (FILE * stream, const gsl_matrix_ushort * m) ;
+int gsl_matrix_ushort_fscanf (FILE * stream, gsl_matrix_ushort * m);
+int gsl_matrix_ushort_fprintf (FILE * stream, const gsl_matrix_ushort * m, const char * format);
+
+int gsl_matrix_ushort_memcpy(gsl_matrix_ushort * dest, const gsl_matrix_ushort * src);
+int gsl_matrix_ushort_swap(gsl_matrix_ushort * m1, gsl_matrix_ushort * m2);
+
+int gsl_matrix_ushort_swap_rows(gsl_matrix_ushort * m, const size_t i, const size_t j);
+int gsl_matrix_ushort_swap_columns(gsl_matrix_ushort * m, const size_t i, const size_t j);
+int gsl_matrix_ushort_swap_rowcol(gsl_matrix_ushort * m, const size_t i, const size_t j);
+int gsl_matrix_ushort_transpose (gsl_matrix_ushort * m);
+int gsl_matrix_ushort_transpose_memcpy (gsl_matrix_ushort * dest, const gsl_matrix_ushort * src);
+
+unsigned short gsl_matrix_ushort_max (const gsl_matrix_ushort * m);
+unsigned short gsl_matrix_ushort_min (const gsl_matrix_ushort * m);
+void gsl_matrix_ushort_minmax (const gsl_matrix_ushort * m, unsigned short * min_out, unsigned short * max_out);
+
+void gsl_matrix_ushort_max_index (const gsl_matrix_ushort * m, size_t * imax, size_t *jmax);
+void gsl_matrix_ushort_min_index (const gsl_matrix_ushort * m, size_t * imin, size_t *jmin);
+void gsl_matrix_ushort_minmax_index (const gsl_matrix_ushort * m, size_t * imin, size_t * jmin, size_t * imax, size_t * jmax);
+
+int gsl_matrix_ushort_equal (const gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+
+int gsl_matrix_ushort_isnull (const gsl_matrix_ushort * m);
+int gsl_matrix_ushort_ispos (const gsl_matrix_ushort * m);
+int gsl_matrix_ushort_isneg (const gsl_matrix_ushort * m);
+int gsl_matrix_ushort_isnonneg (const gsl_matrix_ushort * m);
+
+int gsl_matrix_ushort_add (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+int gsl_matrix_ushort_sub (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+int gsl_matrix_ushort_mul_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+int gsl_matrix_ushort_div_elements (gsl_matrix_ushort * a, const gsl_matrix_ushort * b);
+int gsl_matrix_ushort_scale (gsl_matrix_ushort * a, const double x);
+int gsl_matrix_ushort_add_constant (gsl_matrix_ushort * a, const double x);
+int gsl_matrix_ushort_add_diagonal (gsl_matrix_ushort * a, const double x);
+
+/***********************************************************************/
+/* The functions below are obsolete */
+/***********************************************************************/
+int gsl_matrix_ushort_get_row(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t i);
+int gsl_matrix_ushort_get_col(gsl_vector_ushort * v, const gsl_matrix_ushort * m, const size_t j);
+int gsl_matrix_ushort_set_row(gsl_matrix_ushort * m, const size_t i, const gsl_vector_ushort * v);
+int gsl_matrix_ushort_set_col(gsl_matrix_ushort * m, const size_t j, const gsl_vector_ushort * v);
+/***********************************************************************/
+
+/* inline functions if you are using GCC */
+
+INLINE_DECL unsigned short gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j);
+INLINE_DECL void gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x);
+INLINE_DECL unsigned short * gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j);
+INLINE_DECL const unsigned short * gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+unsigned short
+gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VAL("first index out of range", GSL_EINVAL, 0) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VAL("second index out of range", GSL_EINVAL, 0) ;
+ }
+ }
+#endif
+ return m->data[i * m->tda + j] ;
+}
+
+INLINE_FUN
+void
+gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_VOID("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_VOID("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ m->data[i * m->tda + j] = x ;
+}
+
+INLINE_FUN
+unsigned short *
+gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (unsigned short *) (m->data + (i * m->tda + j)) ;
+}
+
+INLINE_FUN
+const unsigned short *
+gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(1))
+ {
+ if (i >= m->size1)
+ {
+ GSL_ERROR_NULL("first index out of range", GSL_EINVAL) ;
+ }
+ else if (j >= m->size2)
+ {
+ GSL_ERROR_NULL("second index out of range", GSL_EINVAL) ;
+ }
+ }
+#endif
+ return (const unsigned short *) (m->data + (i * m->tda + j)) ;
+}
+
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MATRIX_USHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_message.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_message.h
new file mode 100644
index 00000000..166ff9dd
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_message.h
@@ -0,0 +1,80 @@
+/* err/gsl_message.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MESSAGE_H__
+#define __GSL_MESSAGE_H__
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Provide a general messaging service for client use. Messages can
+ * be selectively turned off at compile time by defining an
+ * appropriate message mask. Client code which uses the GSL_MESSAGE()
+ * macro must provide a mask which is or'ed with the GSL_MESSAGE_MASK.
+ *
+ * The messaging service can be completely turned off
+ * by defining GSL_MESSAGING_OFF. */
+
+void gsl_message(const char * message, const char * file, int line,
+ unsigned int mask);
+
+#ifndef GSL_MESSAGE_MASK
+#define GSL_MESSAGE_MASK 0xffffffffu /* default all messages allowed */
+#endif
+
+GSL_VAR unsigned int gsl_message_mask ;
+
+/* Provide some symolic masks for client ease of use. */
+
+enum {
+ GSL_MESSAGE_MASK_A = 1,
+ GSL_MESSAGE_MASK_B = 2,
+ GSL_MESSAGE_MASK_C = 4,
+ GSL_MESSAGE_MASK_D = 8,
+ GSL_MESSAGE_MASK_E = 16,
+ GSL_MESSAGE_MASK_F = 32,
+ GSL_MESSAGE_MASK_G = 64,
+ GSL_MESSAGE_MASK_H = 128
+} ;
+
+#ifdef GSL_MESSAGING_OFF /* throw away messages */
+#define GSL_MESSAGE(message, mask) do { } while(0)
+#else /* output all messages */
+#define GSL_MESSAGE(message, mask) \
+ do { \
+ if (mask & GSL_MESSAGE_MASK) \
+ gsl_message (message, __FILE__, __LINE__, mask) ; \
+ } while (0)
+#endif
+
+__END_DECLS
+
+#endif /* __GSL_MESSAGE_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_min.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_min.h
new file mode 100644
index 00000000..c179572a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_min.h
@@ -0,0 +1,111 @@
+/* min/gsl_min.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007, 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MIN_H__
+#define __GSL_MIN_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_math.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+ {
+ const char *name;
+ size_t size;
+ int (*set) (void *state, gsl_function * f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper);
+ int (*iterate) (void *state, gsl_function * f, double * x_minimum, double * f_minimum, double * x_lower, double * f_lower, double * x_upper, double * f_upper);
+ }
+gsl_min_fminimizer_type;
+
+typedef struct
+ {
+ const gsl_min_fminimizer_type * type;
+ gsl_function * function ;
+ double x_minimum ;
+ double x_lower ;
+ double x_upper ;
+ double f_minimum, f_lower, f_upper;
+ void *state;
+ }
+gsl_min_fminimizer;
+
+gsl_min_fminimizer *
+gsl_min_fminimizer_alloc (const gsl_min_fminimizer_type * T) ;
+
+void gsl_min_fminimizer_free (gsl_min_fminimizer * s);
+
+int gsl_min_fminimizer_set (gsl_min_fminimizer * s,
+ gsl_function * f, double x_minimum,
+ double x_lower, double x_upper);
+
+int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer * s,
+ gsl_function * f,
+ double x_minimum, double f_minimum,
+ double x_lower, double f_lower,
+ double x_upper, double f_upper);
+
+int gsl_min_fminimizer_iterate (gsl_min_fminimizer * s);
+
+const char * gsl_min_fminimizer_name (const gsl_min_fminimizer * s);
+
+double gsl_min_fminimizer_x_minimum (const gsl_min_fminimizer * s);
+double gsl_min_fminimizer_x_lower (const gsl_min_fminimizer * s);
+double gsl_min_fminimizer_x_upper (const gsl_min_fminimizer * s);
+double gsl_min_fminimizer_f_minimum (const gsl_min_fminimizer * s);
+double gsl_min_fminimizer_f_lower (const gsl_min_fminimizer * s);
+double gsl_min_fminimizer_f_upper (const gsl_min_fminimizer * s);
+
+/* Deprecated, use x_minimum instead */
+double gsl_min_fminimizer_minimum (const gsl_min_fminimizer * s);
+
+int
+gsl_min_test_interval (double x_lower, double x_upper, double epsabs, double epsrel);
+
+GSL_VAR const gsl_min_fminimizer_type * gsl_min_fminimizer_goldensection;
+GSL_VAR const gsl_min_fminimizer_type * gsl_min_fminimizer_brent;
+GSL_VAR const gsl_min_fminimizer_type * gsl_min_fminimizer_quad_golden;
+
+typedef
+int (*gsl_min_bracketing_function)(gsl_function *f,
+ double *x_minimum,double * f_minimum,
+ double *x_lower, double * f_lower,
+ double *x_upper, double * f_upper,
+ size_t eval_max);
+
+int
+gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum,
+ double *x_lower, double * f_lower,
+ double *x_upper, double * f_upper,
+ size_t eval_max);
+
+__END_DECLS
+
+#endif /* __GSL_MIN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_minmax.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_minmax.h
new file mode 100644
index 00000000..0d9a8360
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_minmax.h
@@ -0,0 +1,102 @@
+/* gsl_minmax.h
+ *
+ * Copyright (C) 2008 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MINMAX_H__
+#define __GSL_MINMAX_H__
+#include <gsl/gsl_inline.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Define MAX and MIN macros/functions if they don't exist. */
+
+/* plain old macros for general use */
+#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
+#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
+
+/* function versions of the above, in case they are needed */
+double gsl_max (double a, double b);
+double gsl_min (double a, double b);
+
+/* inline-friendly strongly typed versions */
+#ifdef HAVE_INLINE
+
+INLINE_FUN int GSL_MAX_INT (int a, int b);
+INLINE_FUN int GSL_MIN_INT (int a, int b);
+INLINE_FUN double GSL_MAX_DBL (double a, double b);
+INLINE_FUN double GSL_MIN_DBL (double a, double b);
+INLINE_FUN long double GSL_MAX_LDBL (long double a, long double b);
+INLINE_FUN long double GSL_MIN_LDBL (long double a, long double b);
+
+INLINE_FUN int
+GSL_MAX_INT (int a, int b)
+{
+ return GSL_MAX (a, b);
+}
+
+INLINE_FUN int
+GSL_MIN_INT (int a, int b)
+{
+ return GSL_MIN (a, b);
+}
+
+INLINE_FUN double
+GSL_MAX_DBL (double a, double b)
+{
+ return GSL_MAX (a, b);
+}
+
+INLINE_FUN double
+GSL_MIN_DBL (double a, double b)
+{
+ return GSL_MIN (a, b);
+}
+
+INLINE_FUN long double
+GSL_MAX_LDBL (long double a, long double b)
+{
+ return GSL_MAX (a, b);
+}
+
+INLINE_FUN long double
+GSL_MIN_LDBL (long double a, long double b)
+{
+ return GSL_MIN (a, b);
+}
+#else
+#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
+#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
+#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
+#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
+#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
+#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_POW_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_mode.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_mode.h
new file mode 100644
index 00000000..c8e5d55d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_mode.h
@@ -0,0 +1,88 @@
+/* gsl_mode.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: B. Gough and G. Jungman */
+
+#ifndef __GSL_MODE_H__
+#define __GSL_MODE_H__
+#include <gsl/gsl_inline.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Some functions can take a mode argument. This
+ * is a rough method to do things like control
+ * the precision of the algorithm. This mainly
+ * occurs in special functions, but we figured
+ * it was ok to have a general facility.
+ *
+ * The mode type is 32-bit field. Most of
+ * the fields are currently unused. Users
+ * '|' various predefined constants to get
+ * a desired mode.
+ */
+typedef unsigned int gsl_mode_t;
+
+
+/* Here are the predefined constants.
+ * Note that the precision constants
+ * are special because they are used
+ * to index arrays, so do not change
+ * them. The precision information is
+ * in the low order 3 bits of gsl_mode_t
+ * (the third bit is currently unused).
+ */
+
+/* Note that "0" is double precision,
+ * so that you get that by default if
+ * you forget a flag.
+ */
+#define GSL_PREC_DOUBLE 0
+#define GSL_PREC_SINGLE 1
+#define GSL_PREC_APPROX 2
+
+#ifdef HAVE_INLINE
+INLINE_FUN unsigned int GSL_MODE_PREC(gsl_mode_t mt);
+
+INLINE_FUN unsigned int
+GSL_MODE_PREC(gsl_mode_t mt)
+{ return (mt & (unsigned int)7); }
+#else /* HAVE_INLINE */
+#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7)
+#endif /* HAVE_INLINE */
+
+
+/* Here are some predefined generic modes.
+ */
+#define GSL_MODE_DEFAULT 0
+
+
+__END_DECLS
+
+#endif /* __GSL_MODE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte.h
new file mode 100644
index 00000000..4d1d88e2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte.h
@@ -0,0 +1,55 @@
+/* monte/gsl_monte.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+ *
+ * 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 3 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.
+ */
+
+/* Some things common to all the Monte-Carlo implementations */
+/* Author: MJB */
+
+#ifndef __GSL_MONTE_H__
+#define __GSL_MONTE_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Hide the function type in a typedef so that we can use it in all our
+ integration functions, and make it easy to change things.
+*/
+
+struct gsl_monte_function_struct {
+ double (*f)(double * x_array, size_t dim, void * params);
+ size_t dim;
+ void * params;
+};
+
+typedef struct gsl_monte_function_struct gsl_monte_function;
+
+#define GSL_MONTE_FN_EVAL(F,x) (*((F)->f))(x,(F)->dim,(F)->params)
+
+
+__END_DECLS
+
+#endif /* __GSL_MONTE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_miser.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_miser.h
new file mode 100644
index 00000000..5940396d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_miser.h
@@ -0,0 +1,97 @@
+/* monte/gsl_monte_miser.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+ * Copyright (C) 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+/* Author: MJB */
+
+#ifndef __GSL_MONTE_MISER_H__
+#define __GSL_MONTE_MISER_H__
+
+#include <gsl/gsl_rng.h>
+#include <gsl/gsl_monte.h>
+#include <gsl/gsl_monte_plain.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct {
+ size_t min_calls;
+ size_t min_calls_per_bisection;
+ double dither;
+ double estimate_frac;
+ double alpha;
+ size_t dim;
+ int estimate_style;
+ int depth;
+ int verbose;
+ double * x;
+ double * xmid;
+ double * sigma_l;
+ double * sigma_r;
+ double * fmax_l;
+ double * fmax_r;
+ double * fmin_l;
+ double * fmin_r;
+ double * fsum_l;
+ double * fsum_r;
+ double * fsum2_l;
+ double * fsum2_r;
+ size_t * hits_l;
+ size_t * hits_r;
+} gsl_monte_miser_state;
+
+int gsl_monte_miser_integrate(gsl_monte_function * f,
+ const double xl[], const double xh[],
+ size_t dim, size_t calls,
+ gsl_rng *r,
+ gsl_monte_miser_state* state,
+ double *result, double *abserr);
+
+gsl_monte_miser_state* gsl_monte_miser_alloc(size_t dim);
+
+int gsl_monte_miser_init(gsl_monte_miser_state* state);
+
+void gsl_monte_miser_free(gsl_monte_miser_state* state);
+
+typedef struct {
+ double estimate_frac;
+ size_t min_calls;
+ size_t min_calls_per_bisection;
+ double alpha;
+ double dither;
+} gsl_monte_miser_params;
+
+void gsl_monte_miser_params_get (const gsl_monte_miser_state * state,
+ gsl_monte_miser_params * params);
+
+void gsl_monte_miser_params_set (gsl_monte_miser_state * state,
+ const gsl_monte_miser_params * params);
+
+__END_DECLS
+
+#endif /* __GSL_MONTE_MISER_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_plain.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_plain.h
new file mode 100644
index 00000000..c4745b97
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_plain.h
@@ -0,0 +1,65 @@
+/* monte/gsl_monte_plain.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+ *
+ * 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 3 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.
+ */
+
+/* Plain Monte-Carlo. */
+
+/* Author: MJB */
+
+#ifndef __GSL_MONTE_PLAIN_H__
+#define __GSL_MONTE_PLAIN_H__
+
+#include <stdio.h>
+#include <gsl/gsl_monte.h>
+#include <gsl/gsl_rng.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct {
+ size_t dim;
+ double *x;
+} gsl_monte_plain_state;
+
+int
+gsl_monte_plain_integrate (const gsl_monte_function * f,
+ const double xl[], const double xu[],
+ const size_t dim,
+ const size_t calls,
+ gsl_rng * r,
+ gsl_monte_plain_state * state,
+ double *result, double *abserr);
+
+gsl_monte_plain_state* gsl_monte_plain_alloc(size_t dim);
+
+int gsl_monte_plain_init(gsl_monte_plain_state* state);
+
+void gsl_monte_plain_free (gsl_monte_plain_state* state);
+
+__END_DECLS
+
+#endif /* __GSL_MONTE_PLAIN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_vegas.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_vegas.h
new file mode 100644
index 00000000..0942c04d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_monte_vegas.h
@@ -0,0 +1,125 @@
+/* monte/gsl_monte_vegas.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Michael Booth
+ * Copyright (C) 2009 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+/* header for the gsl "vegas" routines. Mike Booth, May 1998 */
+
+#ifndef __GSL_MONTE_VEGAS_H__
+#define __GSL_MONTE_VEGAS_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_rng.h>
+#include <gsl/gsl_monte.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+enum {GSL_VEGAS_MODE_IMPORTANCE = 1,
+ GSL_VEGAS_MODE_IMPORTANCE_ONLY = 0,
+ GSL_VEGAS_MODE_STRATIFIED = -1};
+
+typedef struct {
+ /* grid */
+ size_t dim;
+ size_t bins_max;
+ unsigned int bins;
+ unsigned int boxes; /* these are both counted along the axes */
+ double * xi;
+ double * xin;
+ double * delx;
+ double * weight;
+ double vol;
+
+ double * x;
+ int * bin;
+ int * box;
+
+ /* distribution */
+ double * d;
+
+ /* control variables */
+ double alpha;
+ int mode;
+ int verbose;
+ unsigned int iterations;
+ int stage;
+
+ /* scratch variables preserved between calls to vegas1/2/3 */
+ double jac;
+ double wtd_int_sum;
+ double sum_wgts;
+ double chi_sum;
+ double chisq;
+
+ double result;
+ double sigma;
+
+ unsigned int it_start;
+ unsigned int it_num;
+ unsigned int samples;
+ unsigned int calls_per_box;
+
+ FILE * ostream;
+
+} gsl_monte_vegas_state;
+
+int gsl_monte_vegas_integrate(gsl_monte_function * f,
+ double xl[], double xu[],
+ size_t dim, size_t calls,
+ gsl_rng * r,
+ gsl_monte_vegas_state *state,
+ double* result, double* abserr);
+
+gsl_monte_vegas_state* gsl_monte_vegas_alloc(size_t dim);
+
+int gsl_monte_vegas_init(gsl_monte_vegas_state* state);
+
+void gsl_monte_vegas_free (gsl_monte_vegas_state* state);
+
+double gsl_monte_vegas_chisq (const gsl_monte_vegas_state* state);
+void gsl_monte_vegas_runval (const gsl_monte_vegas_state* state, double * result, double * sigma);
+
+typedef struct {
+ double alpha;
+ size_t iterations;
+ int stage;
+ int mode;
+ int verbose;
+ FILE * ostream;
+} gsl_monte_vegas_params;
+
+void gsl_monte_vegas_params_get (const gsl_monte_vegas_state * state,
+ gsl_monte_vegas_params * params);
+
+void gsl_monte_vegas_params_set (gsl_monte_vegas_state * state,
+ const gsl_monte_vegas_params * params);
+
+__END_DECLS
+
+#endif /* __GSL_MONTE_VEGAS_H__ */
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit.h
new file mode 100644
index 00000000..403e9955
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit.h
@@ -0,0 +1,319 @@
+/* multifit/gsl_multifit.h
+ *
+ * Copyright (C) 2000, 2007, 2010 Brian Gough
+ * Copyright (C) 2013, Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MULTIFIT_H__
+#define __GSL_MULTIFIT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t nmax; /* maximum number of observations */
+ size_t pmax; /* maximum number of parameters */
+ size_t n; /* number of observations in current SVD decomposition */
+ size_t p; /* number of parameters in current SVD decomposition */
+ gsl_matrix * A; /* least squares matrix for SVD, n-by-p */
+ gsl_matrix * Q;
+ gsl_matrix * QSI;
+ gsl_vector * S;
+ gsl_vector * t;
+ gsl_vector * xt;
+ gsl_vector * D;
+ double rcond; /* reciprocal condition number */
+}
+gsl_multifit_linear_workspace;
+
+gsl_multifit_linear_workspace *
+gsl_multifit_linear_alloc (const size_t n, const size_t p);
+
+void
+gsl_multifit_linear_free (gsl_multifit_linear_workspace * w);
+
+int
+gsl_multifit_linear (const gsl_matrix * X,
+ const gsl_vector * y,
+ gsl_vector * c,
+ gsl_matrix * cov,
+ double * chisq,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_svd (const gsl_matrix * X,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_bsvd (const gsl_matrix * X,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_solve (const double lambda,
+ const gsl_matrix * X,
+ const gsl_vector * y,
+ gsl_vector * c,
+ double *rnorm,
+ double *snorm,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_applyW(const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ gsl_matrix * WX,
+ gsl_vector * Wy);
+
+int
+gsl_multifit_linear_stdform1 (const gsl_vector * L,
+ const gsl_matrix * X,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_wstdform1 (const gsl_vector * L,
+ const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_L_decomp (gsl_matrix * L, gsl_vector * tau);
+
+int
+gsl_multifit_linear_stdform2 (const gsl_matrix * LQR,
+ const gsl_vector * Ltau,
+ const gsl_matrix * X,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_matrix * M,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_wstdform2 (const gsl_matrix * LQR,
+ const gsl_vector * Ltau,
+ const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_matrix * M,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_genform1 (const gsl_vector * L,
+ const gsl_vector * cs,
+ gsl_vector * c,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_genform2 (const gsl_matrix * LQR,
+ const gsl_vector * Ltau,
+ const gsl_matrix * X,
+ const gsl_vector * y,
+ const gsl_vector * cs,
+ const gsl_matrix * M,
+ gsl_vector * c,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_wgenform2 (const gsl_matrix * LQR,
+ const gsl_vector * Ltau,
+ const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ const gsl_vector * cs,
+ const gsl_matrix * M,
+ gsl_vector * c,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_lreg (const double smin, const double smax,
+ gsl_vector * reg_param);
+
+int
+gsl_multifit_linear_lcurve (const gsl_vector * y,
+ gsl_vector * reg_param,
+ gsl_vector * rho, gsl_vector * eta,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_lcorner(const gsl_vector *rho,
+ const gsl_vector *eta,
+ size_t *idx);
+
+int
+gsl_multifit_linear_lcorner2(const gsl_vector *reg_param,
+ const gsl_vector *eta,
+ size_t *idx);
+
+int
+gsl_multifit_linear_Lk(const size_t p, const size_t k, gsl_matrix *L);
+
+int
+gsl_multifit_linear_Lsobolev(const size_t p, const size_t kmax,
+ const gsl_vector *alpha, gsl_matrix *L,
+ gsl_multifit_linear_workspace *work);
+
+int
+gsl_multifit_wlinear (const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ gsl_vector * c,
+ gsl_matrix * cov,
+ double * chisq,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_wlinear_svd (const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ double tol,
+ size_t * rank,
+ gsl_vector * c,
+ gsl_matrix * cov,
+ double *chisq,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_wlinear_usvd (const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ double tol,
+ size_t * rank,
+ gsl_vector * c,
+ gsl_matrix * cov,
+ double *chisq,
+ gsl_multifit_linear_workspace * work);
+
+int
+gsl_multifit_linear_est (const gsl_vector * x,
+ const gsl_vector * c,
+ const gsl_matrix * cov, double *y, double *y_err);
+
+double
+gsl_multifit_linear_rcond (const gsl_multifit_linear_workspace * w);
+
+int
+gsl_multifit_linear_residuals (const gsl_matrix *X, const gsl_vector *y,
+ const gsl_vector *c, gsl_vector *r);
+
+typedef struct
+{
+ const char * name; /* method name */
+ int (*wfun)(const gsl_vector *r, gsl_vector *w);
+ int (*psi_deriv)(const gsl_vector *r, gsl_vector *dpsi);
+ double tuning_default; /* default tuning constant */
+} gsl_multifit_robust_type;
+
+typedef struct
+{
+ double sigma_ols; /* OLS estimate of sigma */
+ double sigma_mad; /* MAD estimate of sigma */
+ double sigma_rob; /* robust estimate of sigma */
+ double sigma; /* final estimate of sigma */
+ double Rsq; /* R^2 coefficient of determination */
+ double adj_Rsq; /* degree of freedom adjusted R^2 */
+ double rmse; /* root mean squared error */
+ double sse; /* residual sum of squares */
+ size_t dof; /* degrees of freedom */
+ size_t numit; /* number of iterations */
+ gsl_vector *weights; /* final weights */
+ gsl_vector *r; /* final residuals y - X c */
+} gsl_multifit_robust_stats;
+
+typedef struct
+{
+ size_t n; /* number of observations */
+ size_t p; /* number of parameters */
+ size_t numit; /* number of iterations */
+ size_t maxiter; /* maximum iterations */
+ const gsl_multifit_robust_type *type;
+ double tune; /* tuning parameter */
+
+ gsl_vector *r; /* residuals at current iteration */
+ gsl_vector *weights; /* weights at current iteration */
+ gsl_vector *c_prev; /* coefficients from previous iteration */
+ gsl_vector *resfac; /* multiplicative factors for residuals */
+
+ gsl_vector *psi; /* psi(r) */
+ gsl_vector *dpsi; /* psi'(r) */
+
+ gsl_matrix *QSI; /* Q S^{-1} of original matrix X */
+ gsl_vector *D; /* balancing parameters of original matrix X */
+
+ gsl_vector *workn; /* workspace of length n */
+
+ gsl_multifit_robust_stats stats; /* various statistics */
+
+ gsl_multifit_linear_workspace *multifit_p;
+} gsl_multifit_robust_workspace;
+
+/* available types */
+GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_default;
+GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_bisquare;
+GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_cauchy;
+GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_fair;
+GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_huber;
+GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_ols;
+GSL_VAR const gsl_multifit_robust_type * gsl_multifit_robust_welsch;
+
+gsl_multifit_robust_workspace *gsl_multifit_robust_alloc(const gsl_multifit_robust_type *T,
+ const size_t n, const size_t p);
+void gsl_multifit_robust_free(gsl_multifit_robust_workspace *w);
+int gsl_multifit_robust_tune(const double tune,
+ gsl_multifit_robust_workspace *w);
+int gsl_multifit_robust_maxiter(const size_t maxiter,
+ gsl_multifit_robust_workspace *w);
+const char *gsl_multifit_robust_name(const gsl_multifit_robust_workspace *w);
+gsl_multifit_robust_stats gsl_multifit_robust_statistics(const gsl_multifit_robust_workspace *w);
+int gsl_multifit_robust_weights(const gsl_vector *r, gsl_vector *wts,
+ gsl_multifit_robust_workspace *w);
+int gsl_multifit_robust(const gsl_matrix * X, const gsl_vector * y,
+ gsl_vector * c, gsl_matrix *cov,
+ gsl_multifit_robust_workspace *w);
+int gsl_multifit_robust_est(const gsl_vector * x, const gsl_vector * c,
+ const gsl_matrix * cov, double *y, double *y_err);
+int gsl_multifit_robust_residuals(const gsl_matrix * X,
+ const gsl_vector * y,
+ const gsl_vector * c, gsl_vector * r,
+ gsl_multifit_robust_workspace * w);
+
+__END_DECLS
+
+#endif /* __GSL_MULTIFIT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit_nlin.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit_nlin.h
new file mode 100644
index 00000000..b0dd06e7
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multifit_nlin.h
@@ -0,0 +1,275 @@
+/* multifit_nlin/gsl_multifit_nlin.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MULTIFIT_NLIN_H__
+#define __GSL_MULTIFIT_NLIN_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_multifit_gradient (const gsl_matrix * J, const gsl_vector * f,
+ gsl_vector * g);
+
+int gsl_multifit_covar (const gsl_matrix * J, const double epsrel, gsl_matrix * covar);
+int gsl_multifit_covar_QRPT (gsl_matrix * r, gsl_permutation * perm,
+ const double epsrel, gsl_matrix * covar);
+
+
+/* Definition of vector-valued functions with parameters based on gsl_vector */
+
+struct gsl_multifit_function_struct
+{
+ int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+ size_t n; /* number of functions */
+ size_t p; /* number of independent variables */
+ void * params;
+};
+
+typedef struct gsl_multifit_function_struct gsl_multifit_function ;
+
+#define GSL_MULTIFIT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y))
+
+typedef struct
+ {
+ const char *name;
+ size_t size;
+ int (*alloc) (void *state, size_t n, size_t p);
+ int (*set) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+ int (*iterate) (void *state, gsl_multifit_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+ void (*free) (void *state);
+ }
+gsl_multifit_fsolver_type;
+
+typedef struct
+ {
+ const gsl_multifit_fsolver_type * type;
+ gsl_multifit_function * function ;
+ gsl_vector * x ;
+ gsl_vector * f ;
+ gsl_vector * dx ;
+ void *state;
+ }
+gsl_multifit_fsolver;
+
+gsl_multifit_fsolver *
+gsl_multifit_fsolver_alloc (const gsl_multifit_fsolver_type * T,
+ size_t n, size_t p);
+
+void gsl_multifit_fsolver_free (gsl_multifit_fsolver * s);
+
+int gsl_multifit_fsolver_set (gsl_multifit_fsolver * s,
+ gsl_multifit_function * f,
+ const gsl_vector * x);
+
+int gsl_multifit_fsolver_iterate (gsl_multifit_fsolver * s);
+
+int gsl_multifit_fsolver_driver (gsl_multifit_fsolver * s,
+ const size_t maxiter,
+ const double epsabs, const double epsrel);
+
+const char * gsl_multifit_fsolver_name (const gsl_multifit_fsolver * s);
+gsl_vector * gsl_multifit_fsolver_position (const gsl_multifit_fsolver * s);
+
+/* Definition of vector-valued functions and gradient with parameters
+ based on gsl_vector */
+
+struct gsl_multifit_function_fdf_struct
+{
+ int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+ int (* df) (const gsl_vector * x, void * params, gsl_matrix * df);
+ int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df);
+ size_t n; /* number of functions */
+ size_t p; /* number of independent variables */
+ void * params; /* user parameters */
+ size_t nevalf; /* number of function evaluations */
+ size_t nevaldf; /* number of Jacobian evaluations */
+};
+
+typedef struct gsl_multifit_function_fdf_struct gsl_multifit_function_fdf ;
+
+typedef struct
+ {
+ const char *name;
+ size_t size;
+ int (*alloc) (void *state, size_t n, size_t p);
+ int (*set) (void *state, const gsl_vector * wts,
+ gsl_multifit_function_fdf * fdf, gsl_vector * x,
+ gsl_vector * f, gsl_vector * dx);
+ int (*iterate) (void *state, const gsl_vector * wts,
+ gsl_multifit_function_fdf * fdf, gsl_vector * x,
+ gsl_vector * f, gsl_vector * dx);
+ int (*gradient) (void *state, gsl_vector * g);
+ int (*jac) (void *state, gsl_matrix * J);
+ void (*free) (void *state);
+ }
+gsl_multifit_fdfsolver_type;
+
+typedef struct
+ {
+ const gsl_multifit_fdfsolver_type * type;
+ gsl_multifit_function_fdf * fdf ;
+ gsl_vector * x; /* parameter values x */
+ gsl_vector * f; /* residual vector f(x) */
+ gsl_vector * dx; /* step dx */
+ gsl_vector * g; /* gradient J^T f */
+ gsl_vector * sqrt_wts; /* sqrt(wts) */
+ size_t niter; /* number of iterations performed */
+ void *state;
+ }
+gsl_multifit_fdfsolver;
+
+
+gsl_multifit_fdfsolver *
+gsl_multifit_fdfsolver_alloc (const gsl_multifit_fdfsolver_type * T,
+ size_t n, size_t p);
+
+int
+gsl_multifit_fdfsolver_set (gsl_multifit_fdfsolver * s,
+ gsl_multifit_function_fdf * fdf,
+ const gsl_vector * x);
+int gsl_multifit_fdfsolver_wset (gsl_multifit_fdfsolver * s,
+ gsl_multifit_function_fdf * f,
+ const gsl_vector * x,
+ const gsl_vector * wts);
+
+int
+gsl_multifit_fdfsolver_iterate (gsl_multifit_fdfsolver * s);
+
+int gsl_multifit_fdfsolver_driver (gsl_multifit_fdfsolver * s,
+ const size_t maxiter,
+ const double xtol,
+ const double gtol,
+ const double ftol,
+ int *info);
+
+int gsl_multifit_fdfsolver_jac (gsl_multifit_fdfsolver * s,
+ gsl_matrix * J);
+
+void
+gsl_multifit_fdfsolver_free (gsl_multifit_fdfsolver * s);
+
+const char * gsl_multifit_fdfsolver_name (const gsl_multifit_fdfsolver * s);
+gsl_vector * gsl_multifit_fdfsolver_position (const gsl_multifit_fdfsolver * s);
+gsl_vector * gsl_multifit_fdfsolver_residual (const gsl_multifit_fdfsolver * s);
+size_t gsl_multifit_fdfsolver_niter (const gsl_multifit_fdfsolver * s);
+int gsl_multifit_eval_wf(gsl_multifit_function_fdf *fdf,
+ const gsl_vector *x, const gsl_vector *wts,
+ gsl_vector *y);
+int gsl_multifit_eval_wdf(gsl_multifit_function_fdf *fdf,
+ const gsl_vector *x, const gsl_vector *wts,
+ gsl_matrix *dy);
+
+int gsl_multifit_fdfsolver_test (const gsl_multifit_fdfsolver * s,
+ const double xtol,
+ const double gtol,
+ const double ftol, int *info);
+int gsl_multifit_test_delta (const gsl_vector * dx, const gsl_vector * x,
+ double epsabs, double epsrel);
+
+int gsl_multifit_test_gradient (const gsl_vector * g, double epsabs);
+
+int gsl_multifit_fdfsolver_dif_df(const gsl_vector *x,
+ const gsl_vector *wts,
+ gsl_multifit_function_fdf *fdf,
+ const gsl_vector *f, gsl_matrix *J);
+int gsl_multifit_fdfsolver_dif_fdf(const gsl_vector *x, gsl_multifit_function_fdf *fdf,
+ gsl_vector *f, gsl_matrix *J);
+
+typedef struct
+{
+ size_t n; /* number of (original) residuals */
+ size_t p; /* number of model parameters */
+ double lambda; /* damping parameter */
+ const gsl_vector *L_diag; /* diagonal damping matrix or NULL */
+ const gsl_matrix *L; /* general damping matrix or NULL */
+ gsl_vector *f; /* function values for finite diff J */
+ gsl_vector *wts; /* weight vector for augmented system */
+ gsl_multifit_fdfsolver * s;
+ gsl_multifit_function_fdf *fdf; /* user defined fdf */
+ gsl_multifit_function_fdf fdftik; /* Tikhonov modified fdf */
+} gsl_multifit_fdfridge;
+
+gsl_multifit_fdfridge *
+gsl_multifit_fdfridge_alloc (const gsl_multifit_fdfsolver_type * T,
+ const size_t n, const size_t p);
+void gsl_multifit_fdfridge_free(gsl_multifit_fdfridge *work);
+const char *gsl_multifit_fdfridge_name(const gsl_multifit_fdfridge * w);
+gsl_vector *gsl_multifit_fdfridge_position (const gsl_multifit_fdfridge * w);
+gsl_vector *gsl_multifit_fdfridge_residual (const gsl_multifit_fdfridge * w);
+size_t gsl_multifit_fdfridge_niter (const gsl_multifit_fdfridge * w);
+int gsl_multifit_fdfridge_set (gsl_multifit_fdfridge * w,
+ gsl_multifit_function_fdf * f,
+ const gsl_vector * x,
+ const double lambda);
+int gsl_multifit_fdfridge_wset (gsl_multifit_fdfridge * w,
+ gsl_multifit_function_fdf * f,
+ const gsl_vector * x,
+ const double lambda,
+ const gsl_vector * wts);
+int gsl_multifit_fdfridge_set2 (gsl_multifit_fdfridge * w,
+ gsl_multifit_function_fdf * f,
+ const gsl_vector * x,
+ const gsl_vector * lambda);
+int gsl_multifit_fdfridge_wset2 (gsl_multifit_fdfridge * w,
+ gsl_multifit_function_fdf * f,
+ const gsl_vector * x,
+ const gsl_vector * lambda,
+ const gsl_vector * wts);
+int gsl_multifit_fdfridge_set3 (gsl_multifit_fdfridge * w,
+ gsl_multifit_function_fdf * f,
+ const gsl_vector * x,
+ const gsl_matrix * L);
+int gsl_multifit_fdfridge_wset3 (gsl_multifit_fdfridge * w,
+ gsl_multifit_function_fdf * f,
+ const gsl_vector * x,
+ const gsl_matrix * L,
+ const gsl_vector * wts);
+int gsl_multifit_fdfridge_iterate (gsl_multifit_fdfridge * w);
+int gsl_multifit_fdfridge_driver (gsl_multifit_fdfridge * w,
+ const size_t maxiter,
+ const double xtol,
+ const double gtol,
+ const double ftol,
+ int *info);
+
+/* extern const gsl_multifit_fsolver_type * gsl_multifit_fsolver_gradient; */
+
+GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmsder;
+GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmder;
+GSL_VAR const gsl_multifit_fdfsolver_type * gsl_multifit_fdfsolver_lmniel;
+
+__END_DECLS
+
+#endif /* __GSL_MULTIFIT_NLIN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_multilarge.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multilarge.h
new file mode 100644
index 00000000..e99c1e1c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multilarge.h
@@ -0,0 +1,141 @@
+/* gsl_multilarge.h
+ *
+ * Copyright (C) 2015 Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MULTILARGE_H__
+#define __GSL_MULTILARGE_H__
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* iteration solver type */
+typedef struct
+{
+ const char *name;
+ void * (*alloc) (const size_t p);
+ int (*reset) (void *);
+ int (*accumulate) (gsl_matrix * X, gsl_vector * y,
+ void *);
+ int (*solve) (const double lambda, gsl_vector * c,
+ double * rnorm, double * snorm, void *);
+ int (*rcond) (double * rcond, void *);
+ int (*lcurve) (gsl_vector * reg_param, gsl_vector * rho,
+ gsl_vector * eta, void *);
+ void (*free) (void *);
+} gsl_multilarge_linear_type;
+
+typedef struct
+{
+ const gsl_multilarge_linear_type * type;
+ void * state;
+ size_t p;
+} gsl_multilarge_linear_workspace;
+
+/* available types */
+GSL_VAR const gsl_multilarge_linear_type * gsl_multilarge_linear_normal;
+GSL_VAR const gsl_multilarge_linear_type * gsl_multilarge_linear_tsqr;
+
+/*
+ * Prototypes
+ */
+gsl_multilarge_linear_workspace *
+gsl_multilarge_linear_alloc(const gsl_multilarge_linear_type * T,
+ const size_t p);
+
+void gsl_multilarge_linear_free(gsl_multilarge_linear_workspace * w);
+
+const char *gsl_multilarge_linear_name(const gsl_multilarge_linear_workspace * w);
+
+int gsl_multilarge_linear_reset(gsl_multilarge_linear_workspace * w);
+
+int gsl_multilarge_linear_accumulate(gsl_matrix * X,
+ gsl_vector * y,
+ gsl_multilarge_linear_workspace * w);
+
+int gsl_multilarge_linear_solve(const double lambda, gsl_vector * c,
+ double * rnorm, double * snorm,
+ gsl_multilarge_linear_workspace * w);
+
+int gsl_multilarge_linear_rcond(double *rcond, gsl_multilarge_linear_workspace * w);
+
+int gsl_multilarge_linear_lcurve(gsl_vector * reg_param, gsl_vector * rho,
+ gsl_vector * eta,
+ gsl_multilarge_linear_workspace * w);
+
+int gsl_multilarge_linear_wstdform1 (const gsl_vector * L,
+ const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_multilarge_linear_workspace * work);
+
+int gsl_multilarge_linear_stdform1 (const gsl_vector * L,
+ const gsl_matrix * X,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_multilarge_linear_workspace * work);
+
+int gsl_multilarge_linear_L_decomp (gsl_matrix * L, gsl_vector * tau);
+
+int gsl_multilarge_linear_wstdform2 (const gsl_matrix * LQR,
+ const gsl_vector * Ltau,
+ const gsl_matrix * X,
+ const gsl_vector * w,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_multilarge_linear_workspace * work);
+
+int gsl_multilarge_linear_stdform2 (const gsl_matrix * LQR,
+ const gsl_vector * Ltau,
+ const gsl_matrix * X,
+ const gsl_vector * y,
+ gsl_matrix * Xs,
+ gsl_vector * ys,
+ gsl_multilarge_linear_workspace * work);
+
+int gsl_multilarge_linear_genform1 (const gsl_vector * L,
+ const gsl_vector * cs,
+ gsl_vector * c,
+ gsl_multilarge_linear_workspace * work);
+
+int gsl_multilarge_linear_genform2 (const gsl_matrix * LQR,
+ const gsl_vector * Ltau,
+ const gsl_vector * cs,
+ gsl_vector * c,
+ gsl_multilarge_linear_workspace * work);
+
+__END_DECLS
+
+#endif /* __GSL_MULTILARGE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_multimin.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multimin.h
new file mode 100644
index 00000000..28702272
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multimin.h
@@ -0,0 +1,226 @@
+/* multimin/gsl_multimin.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Fabrice Rossi
+ *
+ * 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 3 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.
+ */
+
+/* Modified by Tuomo Keskitalo to include fminimizer and
+ Nelder Mead related lines */
+
+#ifndef __GSL_MULTIMIN_H__
+#define __GSL_MULTIMIN_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_min.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Definition of an arbitrary real-valued function with gsl_vector input and */
+/* parameters */
+struct gsl_multimin_function_struct
+{
+ double (* f) (const gsl_vector * x, void * params);
+ size_t n;
+ void * params;
+};
+
+typedef struct gsl_multimin_function_struct gsl_multimin_function;
+
+#define GSL_MULTIMIN_FN_EVAL(F,x) (*((F)->f))(x,(F)->params)
+
+/* Definition of an arbitrary differentiable real-valued function */
+/* with gsl_vector input and parameters */
+struct gsl_multimin_function_fdf_struct
+{
+ double (* f) (const gsl_vector * x, void * params);
+ void (* df) (const gsl_vector * x, void * params,gsl_vector * df);
+ void (* fdf) (const gsl_vector * x, void * params,double *f,gsl_vector * df);
+ size_t n;
+ void * params;
+};
+
+typedef struct gsl_multimin_function_fdf_struct gsl_multimin_function_fdf;
+
+#define GSL_MULTIMIN_FN_EVAL_F(F,x) (*((F)->f))(x,(F)->params)
+#define GSL_MULTIMIN_FN_EVAL_DF(F,x,g) (*((F)->df))(x,(F)->params,(g))
+#define GSL_MULTIMIN_FN_EVAL_F_DF(F,x,y,g) (*((F)->fdf))(x,(F)->params,(y),(g))
+
+int gsl_multimin_diff (const gsl_multimin_function * f,
+ const gsl_vector * x, gsl_vector * g);
+
+/* minimization of non-differentiable functions */
+
+typedef struct
+{
+ const char *name;
+ size_t size;
+ int (*alloc) (void *state, size_t n);
+ int (*set) (void *state, gsl_multimin_function * f,
+ const gsl_vector * x,
+ double * size,
+ const gsl_vector * step_size);
+ int (*iterate) (void *state, gsl_multimin_function * f,
+ gsl_vector * x,
+ double * size,
+ double * fval);
+ void (*free) (void *state);
+}
+gsl_multimin_fminimizer_type;
+
+typedef struct
+{
+ /* multi dimensional part */
+ const gsl_multimin_fminimizer_type *type;
+ gsl_multimin_function *f;
+
+ double fval;
+ gsl_vector * x;
+
+ double size;
+
+ void *state;
+}
+gsl_multimin_fminimizer;
+
+gsl_multimin_fminimizer *
+gsl_multimin_fminimizer_alloc(const gsl_multimin_fminimizer_type *T,
+ size_t n);
+
+int
+gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s,
+ gsl_multimin_function * f,
+ const gsl_vector * x,
+ const gsl_vector * step_size);
+
+void
+gsl_multimin_fminimizer_free(gsl_multimin_fminimizer *s);
+
+const char *
+gsl_multimin_fminimizer_name (const gsl_multimin_fminimizer * s);
+
+int
+gsl_multimin_fminimizer_iterate(gsl_multimin_fminimizer *s);
+
+gsl_vector *
+gsl_multimin_fminimizer_x (const gsl_multimin_fminimizer * s);
+
+double
+gsl_multimin_fminimizer_minimum (const gsl_multimin_fminimizer * s);
+
+double
+gsl_multimin_fminimizer_size (const gsl_multimin_fminimizer * s);
+
+/* Convergence test functions */
+
+int
+gsl_multimin_test_gradient(const gsl_vector * g, double epsabs);
+
+int
+gsl_multimin_test_size(const double size, double epsabs);
+
+/* minimisation of differentiable functions */
+
+typedef struct
+{
+ const char *name;
+ size_t size;
+ int (*alloc) (void *state, size_t n);
+ int (*set) (void *state, gsl_multimin_function_fdf * fdf,
+ const gsl_vector * x, double * f,
+ gsl_vector * gradient, double step_size, double tol);
+ int (*iterate) (void *state,gsl_multimin_function_fdf * fdf,
+ gsl_vector * x, double * f,
+ gsl_vector * gradient, gsl_vector * dx);
+ int (*restart) (void *state);
+ void (*free) (void *state);
+}
+gsl_multimin_fdfminimizer_type;
+
+typedef struct
+{
+ /* multi dimensional part */
+ const gsl_multimin_fdfminimizer_type *type;
+ gsl_multimin_function_fdf *fdf;
+
+ double f;
+ gsl_vector * x;
+ gsl_vector * gradient;
+ gsl_vector * dx;
+
+ void *state;
+}
+gsl_multimin_fdfminimizer;
+
+gsl_multimin_fdfminimizer *
+gsl_multimin_fdfminimizer_alloc(const gsl_multimin_fdfminimizer_type *T,
+ size_t n);
+
+int
+gsl_multimin_fdfminimizer_set (gsl_multimin_fdfminimizer * s,
+ gsl_multimin_function_fdf *fdf,
+ const gsl_vector * x,
+ double step_size, double tol);
+
+void
+gsl_multimin_fdfminimizer_free(gsl_multimin_fdfminimizer *s);
+
+const char *
+gsl_multimin_fdfminimizer_name (const gsl_multimin_fdfminimizer * s);
+
+int
+gsl_multimin_fdfminimizer_iterate(gsl_multimin_fdfminimizer *s);
+
+int
+gsl_multimin_fdfminimizer_restart(gsl_multimin_fdfminimizer *s);
+
+gsl_vector *
+gsl_multimin_fdfminimizer_x (const gsl_multimin_fdfminimizer * s);
+
+gsl_vector *
+gsl_multimin_fdfminimizer_dx (const gsl_multimin_fdfminimizer * s);
+
+gsl_vector *
+gsl_multimin_fdfminimizer_gradient (const gsl_multimin_fdfminimizer * s);
+
+double
+gsl_multimin_fdfminimizer_minimum (const gsl_multimin_fdfminimizer * s);
+
+GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_steepest_descent;
+GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_pr;
+GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_conjugate_fr;
+GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs;
+GSL_VAR const gsl_multimin_fdfminimizer_type *gsl_multimin_fdfminimizer_vector_bfgs2;
+GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex;
+GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2;
+GSL_VAR const gsl_multimin_fminimizer_type *gsl_multimin_fminimizer_nmsimplex2rand;
+
+__END_DECLS
+
+#endif /* __GSL_MULTIMIN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_multiroots.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multiroots.h
new file mode 100644
index 00000000..7f661547
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multiroots.h
@@ -0,0 +1,177 @@
+/* multiroots/gsl_multiroots.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MULTIROOTS_H__
+#define __GSL_MULTIROOTS_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Definition of vector-valued functions with parameters based on gsl_vector */
+
+struct gsl_multiroot_function_struct
+{
+ int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+ size_t n;
+ void * params;
+};
+
+typedef struct gsl_multiroot_function_struct gsl_multiroot_function ;
+
+#define GSL_MULTIROOT_FN_EVAL(F,x,y) (*((F)->f))(x,(F)->params,(y))
+
+int gsl_multiroot_fdjacobian (gsl_multiroot_function * F,
+ const gsl_vector * x, const gsl_vector * f,
+ double epsrel, gsl_matrix * jacobian);
+
+
+typedef struct
+ {
+ const char *name;
+ size_t size;
+ int (*alloc) (void *state, size_t n);
+ int (*set) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+ int (*iterate) (void *state, gsl_multiroot_function * function, gsl_vector * x, gsl_vector * f, gsl_vector * dx);
+ void (*free) (void *state);
+ }
+gsl_multiroot_fsolver_type;
+
+typedef struct
+ {
+ const gsl_multiroot_fsolver_type * type;
+ gsl_multiroot_function * function ;
+ gsl_vector * x ;
+ gsl_vector * f ;
+ gsl_vector * dx ;
+ void *state;
+ }
+gsl_multiroot_fsolver;
+
+gsl_multiroot_fsolver *
+gsl_multiroot_fsolver_alloc (const gsl_multiroot_fsolver_type * T,
+ size_t n);
+
+void gsl_multiroot_fsolver_free (gsl_multiroot_fsolver * s);
+
+int gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * s,
+ gsl_multiroot_function * f,
+ const gsl_vector * x);
+
+int gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver * s);
+
+const char * gsl_multiroot_fsolver_name (const gsl_multiroot_fsolver * s);
+gsl_vector * gsl_multiroot_fsolver_root (const gsl_multiroot_fsolver * s);
+gsl_vector * gsl_multiroot_fsolver_dx (const gsl_multiroot_fsolver * s);
+gsl_vector * gsl_multiroot_fsolver_f (const gsl_multiroot_fsolver * s);
+
+/* Definition of vector-valued functions and gradient with parameters
+ based on gsl_vector */
+
+struct gsl_multiroot_function_fdf_struct
+{
+ int (* f) (const gsl_vector * x, void * params, gsl_vector * f);
+ int (* df) (const gsl_vector * x, void * params, gsl_matrix * df);
+ int (* fdf) (const gsl_vector * x, void * params, gsl_vector * f, gsl_matrix *df);
+ size_t n;
+ void * params;
+};
+
+typedef struct gsl_multiroot_function_fdf_struct gsl_multiroot_function_fdf ;
+
+#define GSL_MULTIROOT_FN_EVAL_F(F,x,y) ((*((F)->f))(x,(F)->params,(y)))
+#define GSL_MULTIROOT_FN_EVAL_DF(F,x,dy) ((*((F)->df))(x,(F)->params,(dy)))
+#define GSL_MULTIROOT_FN_EVAL_F_DF(F,x,y,dy) ((*((F)->fdf))(x,(F)->params,(y),(dy)))
+
+typedef struct
+ {
+ const char *name;
+ size_t size;
+ int (*alloc) (void *state, size_t n);
+ int (*set) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
+ int (*iterate) (void *state, gsl_multiroot_function_fdf * fdf, gsl_vector * x, gsl_vector * f, gsl_matrix * J, gsl_vector * dx);
+ void (*free) (void *state);
+ }
+gsl_multiroot_fdfsolver_type;
+
+typedef struct
+ {
+ const gsl_multiroot_fdfsolver_type * type;
+ gsl_multiroot_function_fdf * fdf ;
+ gsl_vector * x;
+ gsl_vector * f;
+ gsl_matrix * J;
+ gsl_vector * dx;
+ void *state;
+ }
+gsl_multiroot_fdfsolver;
+
+gsl_multiroot_fdfsolver *
+gsl_multiroot_fdfsolver_alloc (const gsl_multiroot_fdfsolver_type * T,
+ size_t n);
+
+int
+gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * s,
+ gsl_multiroot_function_fdf * fdf,
+ const gsl_vector * x);
+
+int
+gsl_multiroot_fdfsolver_iterate (gsl_multiroot_fdfsolver * s);
+
+void
+gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver * s);
+
+const char * gsl_multiroot_fdfsolver_name (const gsl_multiroot_fdfsolver * s);
+gsl_vector * gsl_multiroot_fdfsolver_root (const gsl_multiroot_fdfsolver * s);
+gsl_vector * gsl_multiroot_fdfsolver_dx (const gsl_multiroot_fdfsolver * s);
+gsl_vector * gsl_multiroot_fdfsolver_f (const gsl_multiroot_fdfsolver * s);
+
+int gsl_multiroot_test_delta (const gsl_vector * dx, const gsl_vector * x,
+ double epsabs, double epsrel);
+
+int gsl_multiroot_test_residual (const gsl_vector * f, double epsabs);
+
+GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_dnewton;
+GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_broyden;
+GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrid;
+GSL_VAR const gsl_multiroot_fsolver_type * gsl_multiroot_fsolver_hybrids;
+
+GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_newton;
+GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_gnewton;
+GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridj;
+GSL_VAR const gsl_multiroot_fdfsolver_type * gsl_multiroot_fdfsolver_hybridsj;
+
+
+__END_DECLS
+
+#endif /* __GSL_MULTIROOTS_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_multiset.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multiset.h
new file mode 100644
index 00000000..1ba5d6cc
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_multiset.h
@@ -0,0 +1,93 @@
+/* multiset/gsl_multiset.h
+ * based on combination/gsl_combination.h by Szymon Jaroszewicz
+ * based on permutation/gsl_permutation.h by Brian Gough
+ *
+ * Copyright (C) 2009 Rhys Ulerich
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_MULTISET_H__
+#define __GSL_MULTISET_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_multiset_struct
+{
+ size_t n;
+ size_t k;
+ size_t *data;
+};
+
+typedef struct gsl_multiset_struct gsl_multiset;
+
+gsl_multiset *gsl_multiset_alloc (const size_t n, const size_t k);
+gsl_multiset *gsl_multiset_calloc (const size_t n, const size_t k);
+void gsl_multiset_init_first (gsl_multiset * c);
+void gsl_multiset_init_last (gsl_multiset * c);
+void gsl_multiset_free (gsl_multiset * c);
+int gsl_multiset_memcpy (gsl_multiset * dest, const gsl_multiset * src);
+
+int gsl_multiset_fread (FILE * stream, gsl_multiset * c);
+int gsl_multiset_fwrite (FILE * stream, const gsl_multiset * c);
+int gsl_multiset_fscanf (FILE * stream, gsl_multiset * c);
+int gsl_multiset_fprintf (FILE * stream, const gsl_multiset * c, const char *format);
+
+size_t gsl_multiset_n (const gsl_multiset * c);
+size_t gsl_multiset_k (const gsl_multiset * c);
+size_t * gsl_multiset_data (const gsl_multiset * c);
+
+int gsl_multiset_valid (gsl_multiset * c);
+int gsl_multiset_next (gsl_multiset * c);
+int gsl_multiset_prev (gsl_multiset * c);
+
+INLINE_DECL size_t gsl_multiset_get (const gsl_multiset * c, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+size_t
+gsl_multiset_get (const gsl_multiset * c, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return c->data[i];
+}
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_MULTISET_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_nan.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_nan.h
new file mode 100644
index 00000000..5cb52efc
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_nan.h
@@ -0,0 +1,45 @@
+/* gsl_nan.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_NAN_H__
+#define __GSL_NAN_H__
+
+#ifdef INFINITY
+# define GSL_POSINF INFINITY
+# define GSL_NEGINF (-INFINITY)
+#elif defined(HUGE_VAL)
+# define GSL_POSINF HUGE_VAL
+# define GSL_NEGINF (-HUGE_VAL)
+#else
+# define GSL_POSINF (gsl_posinf())
+# define GSL_NEGINF (gsl_neginf())
+#endif
+
+#ifdef NAN
+# define GSL_NAN NAN
+#elif defined(INFINITY)
+# define GSL_NAN (INFINITY/INFINITY)
+#else
+# define GSL_NAN (gsl_nan())
+#endif
+
+#define GSL_POSZERO (+0.0)
+#define GSL_NEGZERO (-0.0)
+
+#endif /* __GSL_NAN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_ntuple.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_ntuple.h
new file mode 100644
index 00000000..90d8a26c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_ntuple.h
@@ -0,0 +1,82 @@
+/* histogram/ntuple.h
+ *
+ * Copyright (C) 2000 Simone Piccardi
+ *
+ * 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 3 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.
+ *
+ */
+
+/* Jan/2001 Modified by Brian Gough. Minor changes for GSL */
+
+#ifndef __GSL_NTUPLE_H__
+#define __GSL_NTUPLE_H__
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_histogram.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct {
+ FILE * file;
+ void * ntuple_data;
+ size_t size;
+} gsl_ntuple;
+
+typedef struct {
+ int (* function) (void * ntuple_data, void * params);
+ void * params;
+} gsl_ntuple_select_fn;
+
+typedef struct {
+ double (* function) (void * ntuple_data, void * params);
+ void * params;
+} gsl_ntuple_value_fn;
+
+gsl_ntuple *
+gsl_ntuple_open (char * filename, void * ntuple_data, size_t size);
+
+gsl_ntuple *
+gsl_ntuple_create (char * filename, void * ntuple_data, size_t size);
+
+int gsl_ntuple_write (gsl_ntuple * ntuple);
+int gsl_ntuple_read (gsl_ntuple * ntuple);
+
+int gsl_ntuple_bookdata (gsl_ntuple * ntuple); /* synonym for write */
+
+int gsl_ntuple_project (gsl_histogram * h, gsl_ntuple * ntuple,
+ gsl_ntuple_value_fn *value_func,
+ gsl_ntuple_select_fn *select_func);
+
+int gsl_ntuple_close (gsl_ntuple * ntuple);
+
+__END_DECLS
+
+#endif /* __GSL_NTUPLE_H__ */
+
+
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv.h
new file mode 100644
index 00000000..d70f1501
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv.h
@@ -0,0 +1,230 @@
+/* ode-initval/gsl_odeiv.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman
+ */
+#ifndef __GSL_ODEIV_H__
+#define __GSL_ODEIV_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Description of a system of ODEs.
+ *
+ * y' = f(t,y) = dydt(t, y)
+ *
+ * The system is specified by giving the right-hand-side
+ * of the equation and possibly a jacobian function.
+ *
+ * Some methods require the jacobian function, which calculates
+ * the matrix dfdy and the vector dfdt. The matrix dfdy conforms
+ * to the GSL standard, being a continuous range of floating point
+ * values, in row-order.
+ *
+ * As with GSL function objects, user-supplied parameter
+ * data is also present.
+ */
+
+typedef struct
+{
+ int (* function) (double t, const double y[], double dydt[], void * params);
+ int (* jacobian) (double t, const double y[], double * dfdy, double dfdt[], void * params);
+ size_t dimension;
+ void * params;
+}
+gsl_odeiv_system;
+
+#define GSL_ODEIV_FN_EVAL(S,t,y,f) (*((S)->function))(t,y,f,(S)->params)
+#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt) (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params)
+
+
+/* General stepper object.
+ *
+ * Opaque object for stepping an ODE system from t to t+h.
+ * In general the object has some state which facilitates
+ * iterating the stepping operation.
+ */
+
+typedef struct
+{
+ const char * name;
+ int can_use_dydt_in;
+ int gives_exact_dydt_out;
+ void * (*alloc) (size_t dim);
+ int (*apply) (void * state, size_t dim, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt);
+ int (*reset) (void * state, size_t dim);
+ unsigned int (*order) (void * state);
+ void (*free) (void * state);
+}
+gsl_odeiv_step_type;
+
+typedef struct {
+ const gsl_odeiv_step_type * type;
+ size_t dimension;
+ void * state;
+}
+gsl_odeiv_step;
+
+
+/* Available stepper types.
+ *
+ * rk2 : embedded 2nd(3rd) Runge-Kutta
+ * rk4 : 4th order (classical) Runge-Kutta
+ * rkck : embedded 4th(5th) Runge-Kutta, Cash-Karp
+ * rk8pd : embedded 8th(9th) Runge-Kutta, Prince-Dormand
+ * rk2imp : implicit 2nd order Runge-Kutta at Gaussian points
+ * rk4imp : implicit 4th order Runge-Kutta at Gaussian points
+ * gear1 : M=1 implicit Gear method
+ * gear2 : M=2 implicit Gear method
+ */
+
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkf45;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rkck;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk8pd;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2imp;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk2simp;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_rk4imp;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_bsimp;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear1;
+GSL_VAR const gsl_odeiv_step_type *gsl_odeiv_step_gear2;
+
+
+/* Constructor for specialized stepper objects.
+ */
+gsl_odeiv_step * gsl_odeiv_step_alloc(const gsl_odeiv_step_type * T, size_t dim);
+int gsl_odeiv_step_reset(gsl_odeiv_step * s);
+void gsl_odeiv_step_free(gsl_odeiv_step * s);
+
+/* General stepper object methods.
+ */
+const char * gsl_odeiv_step_name(const gsl_odeiv_step * s);
+unsigned int gsl_odeiv_step_order(const gsl_odeiv_step * s);
+
+int gsl_odeiv_step_apply(gsl_odeiv_step * s, double t, double h, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * dydt);
+
+/* General step size control object.
+ *
+ * The hadjust() method controls the adjustment of
+ * step size given the result of a step and the error.
+ * Valid hadjust() methods must return one of the codes below.
+ *
+ * The general data can be used by specializations
+ * to store state and control their heuristics.
+ */
+
+typedef struct
+{
+ const char * name;
+ void * (*alloc) (void);
+ int (*init) (void * state, double eps_abs, double eps_rel, double a_y, double a_dydt);
+ int (*hadjust) (void * state, size_t dim, unsigned int ord, const double y[], const double yerr[], const double yp[], double * h);
+ void (*free) (void * state);
+}
+gsl_odeiv_control_type;
+
+typedef struct
+{
+ const gsl_odeiv_control_type * type;
+ void * state;
+}
+gsl_odeiv_control;
+
+/* Possible return values for an hadjust() evolution method.
+ */
+#define GSL_ODEIV_HADJ_INC 1 /* step was increased */
+#define GSL_ODEIV_HADJ_NIL 0 /* step unchanged */
+#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased */
+
+gsl_odeiv_control * gsl_odeiv_control_alloc(const gsl_odeiv_control_type * T);
+int gsl_odeiv_control_init(gsl_odeiv_control * c, double eps_abs, double eps_rel, double a_y, double a_dydt);
+void gsl_odeiv_control_free(gsl_odeiv_control * c);
+int gsl_odeiv_control_hadjust (gsl_odeiv_control * c, gsl_odeiv_step * s, const double y[], const double yerr[], const double dydt[], double * h);
+const char * gsl_odeiv_control_name(const gsl_odeiv_control * c);
+
+/* Available control object constructors.
+ *
+ * The standard control object is a four parameter heuristic
+ * defined as follows:
+ * D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|)
+ * D1 = |yerr|
+ * q = consistency order of method (q=4 for 4(5) embedded RK)
+ * S = safety factor (0.9 say)
+ *
+ * / (D0/D1)^(1/(q+1)) D0 >= D1
+ * h_NEW = S h_OLD * |
+ * \ (D0/D1)^(1/q) D0 < D1
+ *
+ * This encompasses all the standard error scaling methods.
+ *
+ * The y method is the standard method with a_y=1, a_dydt=0.
+ * The yp method is the standard method with a_y=0, a_dydt=1.
+ */
+
+gsl_odeiv_control * gsl_odeiv_control_standard_new(double eps_abs, double eps_rel, double a_y, double a_dydt);
+gsl_odeiv_control * gsl_odeiv_control_y_new(double eps_abs, double eps_rel);
+gsl_odeiv_control * gsl_odeiv_control_yp_new(double eps_abs, double eps_rel);
+
+/* This controller computes errors using different absolute errors for
+ * each component
+ *
+ * D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|)
+ */
+gsl_odeiv_control * gsl_odeiv_control_scaled_new(double eps_abs, double eps_rel, double a_y, double a_dydt, const double scale_abs[], size_t dim);
+
+/* General evolution object.
+ */
+typedef struct {
+ size_t dimension;
+ double * y0;
+ double * yerr;
+ double * dydt_in;
+ double * dydt_out;
+ double last_step;
+ unsigned long int count;
+ unsigned long int failed_steps;
+}
+gsl_odeiv_evolve;
+
+/* Evolution object methods.
+ */
+gsl_odeiv_evolve * gsl_odeiv_evolve_alloc(size_t dim);
+int gsl_odeiv_evolve_apply(gsl_odeiv_evolve * e, gsl_odeiv_control * con, gsl_odeiv_step * step, const gsl_odeiv_system * dydt, double * t, double t1, double * h, double y[]);
+int gsl_odeiv_evolve_reset(gsl_odeiv_evolve * e);
+void gsl_odeiv_evolve_free(gsl_odeiv_evolve * e);
+
+
+__END_DECLS
+
+#endif /* __GSL_ODEIV_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv2.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv2.h
new file mode 100644
index 00000000..9bcfbae6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_odeiv2.h
@@ -0,0 +1,333 @@
+/* ode-initval/odeiv2.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+/* Modified by Tuomo Keskitalo */
+
+#ifndef __GSL_ODEIV2_H__
+#define __GSL_ODEIV2_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+/* Description of a system of ODEs.
+ *
+ * y' = f(t,y) = dydt(t, y)
+ *
+ * The system is specified by giving the right-hand-side
+ * of the equation and possibly a jacobian function.
+ *
+ * Some methods require the jacobian function, which calculates
+ * the matrix dfdy and the vector dfdt. The matrix dfdy conforms
+ * to the GSL standard, being a continuous range of floating point
+ * values, in row-order.
+ *
+ * As with GSL function objects, user-supplied parameter
+ * data is also present.
+ */
+ typedef struct
+{
+ int (*function) (double t, const double y[], double dydt[], void *params);
+ int (*jacobian) (double t, const double y[], double *dfdy, double dfdt[],
+ void *params);
+ size_t dimension;
+ void *params;
+}
+gsl_odeiv2_system;
+
+/* Function evaluation macros */
+
+#define GSL_ODEIV_FN_EVAL(S,t,y,f) (*((S)->function))(t,y,f,(S)->params)
+#define GSL_ODEIV_JA_EVAL(S,t,y,dfdy,dfdt) (*((S)->jacobian))(t,y,dfdy,dfdt,(S)->params)
+
+/* Type definitions */
+
+typedef struct gsl_odeiv2_step_struct gsl_odeiv2_step;
+typedef struct gsl_odeiv2_control_struct gsl_odeiv2_control;
+typedef struct gsl_odeiv2_evolve_struct gsl_odeiv2_evolve;
+typedef struct gsl_odeiv2_driver_struct gsl_odeiv2_driver;
+
+/* Stepper object
+ *
+ * Opaque object for stepping an ODE system from t to t+h.
+ * In general the object has some state which facilitates
+ * iterating the stepping operation.
+ */
+
+typedef struct
+{
+ const char *name;
+ int can_use_dydt_in;
+ int gives_exact_dydt_out;
+ void *(*alloc) (size_t dim);
+ int (*apply) (void *state, size_t dim, double t, double h, double y[],
+ double yerr[], const double dydt_in[], double dydt_out[],
+ const gsl_odeiv2_system * dydt);
+ int (*set_driver) (void *state, const gsl_odeiv2_driver * d);
+ int (*reset) (void *state, size_t dim);
+ unsigned int (*order) (void *state);
+ void (*free) (void *state);
+}
+gsl_odeiv2_step_type;
+
+struct gsl_odeiv2_step_struct
+{
+ const gsl_odeiv2_step_type *type;
+ size_t dimension;
+ void *state;
+};
+
+/* Available stepper types */
+
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkf45;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rkck;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk8pd;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk2imp;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk4imp;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_bsimp;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_rk1imp;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msadams;
+GSL_VAR const gsl_odeiv2_step_type *gsl_odeiv2_step_msbdf;
+
+/* Stepper object methods */
+
+gsl_odeiv2_step *gsl_odeiv2_step_alloc (const gsl_odeiv2_step_type * T,
+ size_t dim);
+int gsl_odeiv2_step_reset (gsl_odeiv2_step * s);
+void gsl_odeiv2_step_free (gsl_odeiv2_step * s);
+const char *gsl_odeiv2_step_name (const gsl_odeiv2_step * s);
+unsigned int gsl_odeiv2_step_order (const gsl_odeiv2_step * s);
+int gsl_odeiv2_step_apply (gsl_odeiv2_step * s, double t, double h,
+ double y[], double yerr[], const double dydt_in[],
+ double dydt_out[], const gsl_odeiv2_system * dydt);
+int gsl_odeiv2_step_set_driver (gsl_odeiv2_step * s,
+ const gsl_odeiv2_driver * d);
+
+/* Step size control object. */
+
+typedef struct
+{
+ const char *name;
+ void *(*alloc) (void);
+ int (*init) (void *state, double eps_abs, double eps_rel, double a_y,
+ double a_dydt);
+ int (*hadjust) (void *state, size_t dim, unsigned int ord, const double y[],
+ const double yerr[], const double yp[], double *h);
+ int (*errlevel) (void *state, const double y, const double dydt,
+ const double h, const size_t ind, double *errlev);
+ int (*set_driver) (void *state, const gsl_odeiv2_driver * d);
+ void (*free) (void *state);
+}
+gsl_odeiv2_control_type;
+
+struct gsl_odeiv2_control_struct
+{
+ const gsl_odeiv2_control_type *type;
+ void *state;
+};
+
+/* Possible return values for an hadjust() evolution method */
+
+#define GSL_ODEIV_HADJ_INC 1 /* step was increased */
+#define GSL_ODEIV_HADJ_NIL 0 /* step unchanged */
+#define GSL_ODEIV_HADJ_DEC (-1) /* step decreased */
+
+/* General step size control methods.
+ *
+ * The hadjust() method controls the adjustment of
+ * step size given the result of a step and the error.
+ * Valid hadjust() methods must return one of the codes below.
+ * errlevel function calculates the desired error level D0.
+ *
+ * The general data can be used by specializations
+ * to store state and control their heuristics.
+ */
+
+gsl_odeiv2_control *gsl_odeiv2_control_alloc (const gsl_odeiv2_control_type *
+ T);
+int gsl_odeiv2_control_init (gsl_odeiv2_control * c, double eps_abs,
+ double eps_rel, double a_y, double a_dydt);
+void gsl_odeiv2_control_free (gsl_odeiv2_control * c);
+int gsl_odeiv2_control_hadjust (gsl_odeiv2_control * c, gsl_odeiv2_step * s,
+ const double y[], const double yerr[],
+ const double dydt[], double *h);
+const char *gsl_odeiv2_control_name (const gsl_odeiv2_control * c);
+int gsl_odeiv2_control_errlevel (gsl_odeiv2_control * c, const double y,
+ const double dydt, const double h,
+ const size_t ind, double *errlev);
+int gsl_odeiv2_control_set_driver (gsl_odeiv2_control * c,
+ const gsl_odeiv2_driver * d);
+
+/* Available control object constructors.
+ *
+ * The standard control object is a four parameter heuristic
+ * defined as follows:
+ * D0 = eps_abs + eps_rel * (a_y |y| + a_dydt h |y'|)
+ * D1 = |yerr|
+ * q = consistency order of method (q=4 for 4(5) embedded RK)
+ * S = safety factor (0.9 say)
+ *
+ * / (D0/D1)^(1/(q+1)) D0 >= D1
+ * h_NEW = S h_OLD * |
+ * \ (D0/D1)^(1/q) D0 < D1
+ *
+ * This encompasses all the standard error scaling methods.
+ *
+ * The y method is the standard method with a_y=1, a_dydt=0.
+ * The yp method is the standard method with a_y=0, a_dydt=1.
+ */
+
+gsl_odeiv2_control *gsl_odeiv2_control_standard_new (double eps_abs,
+ double eps_rel,
+ double a_y,
+ double a_dydt);
+gsl_odeiv2_control *gsl_odeiv2_control_y_new (double eps_abs, double eps_rel);
+gsl_odeiv2_control *gsl_odeiv2_control_yp_new (double eps_abs,
+ double eps_rel);
+
+/* This controller computes errors using different absolute errors for
+ * each component
+ *
+ * D0 = eps_abs * scale_abs[i] + eps_rel * (a_y |y| + a_dydt h |y'|)
+ */
+
+gsl_odeiv2_control *gsl_odeiv2_control_scaled_new (double eps_abs,
+ double eps_rel, double a_y,
+ double a_dydt,
+ const double scale_abs[],
+ size_t dim);
+
+/* Evolution object */
+
+struct gsl_odeiv2_evolve_struct
+{
+ size_t dimension;
+ double *y0;
+ double *yerr;
+ double *dydt_in;
+ double *dydt_out;
+ double last_step;
+ unsigned long int count;
+ unsigned long int failed_steps;
+ const gsl_odeiv2_driver *driver;
+};
+
+/* Evolution object methods */
+
+gsl_odeiv2_evolve *gsl_odeiv2_evolve_alloc (size_t dim);
+int gsl_odeiv2_evolve_apply (gsl_odeiv2_evolve * e, gsl_odeiv2_control * con,
+ gsl_odeiv2_step * step,
+ const gsl_odeiv2_system * dydt, double *t,
+ double t1, double *h, double y[]);
+int gsl_odeiv2_evolve_apply_fixed_step (gsl_odeiv2_evolve * e,
+ gsl_odeiv2_control * con,
+ gsl_odeiv2_step * step,
+ const gsl_odeiv2_system * dydt,
+ double *t, const double h0,
+ double y[]);
+int gsl_odeiv2_evolve_reset (gsl_odeiv2_evolve * e);
+void gsl_odeiv2_evolve_free (gsl_odeiv2_evolve * e);
+int gsl_odeiv2_evolve_set_driver (gsl_odeiv2_evolve * e,
+ const gsl_odeiv2_driver * d);
+
+/* Driver object
+ *
+ * This is a high level wrapper for step, control and
+ * evolve objects.
+ */
+
+struct gsl_odeiv2_driver_struct
+{
+ const gsl_odeiv2_system *sys; /* ODE system */
+ gsl_odeiv2_step *s; /* stepper object */
+ gsl_odeiv2_control *c; /* control object */
+ gsl_odeiv2_evolve *e; /* evolve object */
+ double h; /* step size */
+ double hmin; /* minimum step size allowed */
+ double hmax; /* maximum step size allowed */
+ unsigned long int n; /* number of steps taken */
+ unsigned long int nmax; /* Maximum number of steps allowed */
+};
+
+/* Driver object methods */
+
+gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_y_new (const gsl_odeiv2_system *
+ sys,
+ const gsl_odeiv2_step_type *
+ T, const double hstart,
+ const double epsabs,
+ const double epsrel);
+gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_yp_new (const gsl_odeiv2_system *
+ sys,
+ const gsl_odeiv2_step_type
+ * T, const double hstart,
+ const double epsabs,
+ const double epsrel);
+gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_scaled_new (const gsl_odeiv2_system
+ * sys,
+ const
+ gsl_odeiv2_step_type *
+ T, const double hstart,
+ const double epsabs,
+ const double epsrel,
+ const double a_y,
+ const double a_dydt,
+ const double
+ scale_abs[]);
+gsl_odeiv2_driver *gsl_odeiv2_driver_alloc_standard_new (const
+ gsl_odeiv2_system *
+ sys,
+ const
+ gsl_odeiv2_step_type
+ * T,
+ const double hstart,
+ const double epsabs,
+ const double epsrel,
+ const double a_y,
+ const double a_dydt);
+int gsl_odeiv2_driver_set_hmin (gsl_odeiv2_driver * d, const double hmin);
+int gsl_odeiv2_driver_set_hmax (gsl_odeiv2_driver * d, const double hmax);
+int gsl_odeiv2_driver_set_nmax (gsl_odeiv2_driver * d,
+ const unsigned long int nmax);
+int gsl_odeiv2_driver_apply (gsl_odeiv2_driver * d, double *t,
+ const double t1, double y[]);
+int gsl_odeiv2_driver_apply_fixed_step (gsl_odeiv2_driver * d, double *t,
+ const double h,
+ const unsigned long int n,
+ double y[]);
+int gsl_odeiv2_driver_reset (gsl_odeiv2_driver * d);
+int gsl_odeiv2_driver_reset_hstart (gsl_odeiv2_driver * d, const double hstart);
+void gsl_odeiv2_driver_free (gsl_odeiv2_driver * state);
+
+__END_DECLS
+#endif /* __GSL_ODEIV2_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permutation.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permutation.h
new file mode 100644
index 00000000..10ac0f58
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permutation.h
@@ -0,0 +1,100 @@
+/* permutation/gsl_permutation.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTATION_H__
+#define __GSL_PERMUTATION_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_permutation_struct
+{
+ size_t size;
+ size_t *data;
+};
+
+typedef struct gsl_permutation_struct gsl_permutation;
+
+gsl_permutation *gsl_permutation_alloc (const size_t n);
+gsl_permutation *gsl_permutation_calloc (const size_t n);
+void gsl_permutation_init (gsl_permutation * p);
+void gsl_permutation_free (gsl_permutation * p);
+int gsl_permutation_memcpy (gsl_permutation * dest, const gsl_permutation * src);
+
+int gsl_permutation_fread (FILE * stream, gsl_permutation * p);
+int gsl_permutation_fwrite (FILE * stream, const gsl_permutation * p);
+int gsl_permutation_fscanf (FILE * stream, gsl_permutation * p);
+int gsl_permutation_fprintf (FILE * stream, const gsl_permutation * p, const char *format);
+
+size_t gsl_permutation_size (const gsl_permutation * p);
+size_t * gsl_permutation_data (const gsl_permutation * p);
+
+int gsl_permutation_swap (gsl_permutation * p, const size_t i, const size_t j);
+
+int gsl_permutation_valid (const gsl_permutation * p);
+void gsl_permutation_reverse (gsl_permutation * p);
+int gsl_permutation_inverse (gsl_permutation * inv, const gsl_permutation * p);
+int gsl_permutation_next (gsl_permutation * p);
+int gsl_permutation_prev (gsl_permutation * p);
+int gsl_permutation_mul (gsl_permutation * p, const gsl_permutation * pa, const gsl_permutation * pb);
+
+int gsl_permutation_linear_to_canonical (gsl_permutation * q, const gsl_permutation * p);
+int gsl_permutation_canonical_to_linear (gsl_permutation * p, const gsl_permutation * q);
+
+size_t gsl_permutation_inversions (const gsl_permutation * p);
+size_t gsl_permutation_linear_cycles (const gsl_permutation * p);
+size_t gsl_permutation_canonical_cycles (const gsl_permutation * q);
+
+INLINE_DECL size_t gsl_permutation_get (const gsl_permutation * p, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+size_t
+gsl_permutation_get (const gsl_permutation * p, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= p->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return p->data[i];
+}
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTATION_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute.h
new file mode 100644
index 00000000..23f09a6f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute.h
@@ -0,0 +1,24 @@
+#ifndef __GSL_PERMUTE_H__
+#define __GSL_PERMUTE_H__
+
+#include <gsl/gsl_permute_complex_long_double.h>
+#include <gsl/gsl_permute_complex_double.h>
+#include <gsl/gsl_permute_complex_float.h>
+
+#include <gsl/gsl_permute_long_double.h>
+#include <gsl/gsl_permute_double.h>
+#include <gsl/gsl_permute_float.h>
+
+#include <gsl/gsl_permute_ulong.h>
+#include <gsl/gsl_permute_long.h>
+
+#include <gsl/gsl_permute_uint.h>
+#include <gsl/gsl_permute_int.h>
+
+#include <gsl/gsl_permute_ushort.h>
+#include <gsl/gsl_permute_short.h>
+
+#include <gsl/gsl_permute_uchar.h>
+#include <gsl/gsl_permute_char.h>
+
+#endif /* __GSL_PERMUTE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_char.h
new file mode 100644
index 00000000..bf2ebb1d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_char.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_CHAR_H__
+#define __GSL_PERMUTE_CHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_char (const size_t * p, char * data, const size_t stride, const size_t n);
+int gsl_permute_char_inverse (const size_t * p, char * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_CHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_double.h
new file mode 100644
index 00000000..c20442b6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_double.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_complex_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_COMPLEX_DOUBLE_H__
+#define __GSL_PERMUTE_COMPLEX_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_complex (const size_t * p, double * data, const size_t stride, const size_t n);
+int gsl_permute_complex_inverse (const size_t * p, double * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_COMPLEX_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_float.h
new file mode 100644
index 00000000..65ee0fe4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_float.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_complex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_COMPLEX_FLOAT_H__
+#define __GSL_PERMUTE_COMPLEX_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_complex_float (const size_t * p, float * data, const size_t stride, const size_t n);
+int gsl_permute_complex_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_COMPLEX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_long_double.h
new file mode 100644
index 00000000..4849b15d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_complex_long_double.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_complex_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__
+#define __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_complex_long_double (const size_t * p, long double * data, const size_t stride, const size_t n);
+int gsl_permute_complex_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_COMPLEX_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_double.h
new file mode 100644
index 00000000..58be1812
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_double.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_DOUBLE_H__
+#define __GSL_PERMUTE_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute (const size_t * p, double * data, const size_t stride, const size_t n);
+int gsl_permute_inverse (const size_t * p, double * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_float.h
new file mode 100644
index 00000000..bc79bd5a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_float.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_FLOAT_H__
+#define __GSL_PERMUTE_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_float (const size_t * p, float * data, const size_t stride, const size_t n);
+int gsl_permute_float_inverse (const size_t * p, float * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_int.h
new file mode 100644
index 00000000..b6ff5008
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_int.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_INT_H__
+#define __GSL_PERMUTE_INT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_int (const size_t * p, int * data, const size_t stride, const size_t n);
+int gsl_permute_int_inverse (const size_t * p, int * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long.h
new file mode 100644
index 00000000..383294c5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_LONG_H__
+#define __GSL_PERMUTE_LONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_long (const size_t * p, long * data, const size_t stride, const size_t n);
+int gsl_permute_long_inverse (const size_t * p, long * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_LONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long_double.h
new file mode 100644
index 00000000..f58e1cd8
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_long_double.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_LONG_DOUBLE_H__
+#define __GSL_PERMUTE_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_long_double (const size_t * p, long double * data, const size_t stride, const size_t n);
+int gsl_permute_long_double_inverse (const size_t * p, long double * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_short.h
new file mode 100644
index 00000000..39cf55d6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_short.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_SHORT_H__
+#define __GSL_PERMUTE_SHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_short (const size_t * p, short * data, const size_t stride, const size_t n);
+int gsl_permute_short_inverse (const size_t * p, short * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_SHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uchar.h
new file mode 100644
index 00000000..54bb401b
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uchar.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_UCHAR_H__
+#define __GSL_PERMUTE_UCHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_uchar (const size_t * p, unsigned char * data, const size_t stride, const size_t n);
+int gsl_permute_uchar_inverse (const size_t * p, unsigned char * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_UCHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uint.h
new file mode 100644
index 00000000..8915b7bc
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_uint.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_UINT_H__
+#define __GSL_PERMUTE_UINT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_uint (const size_t * p, unsigned int * data, const size_t stride, const size_t n);
+int gsl_permute_uint_inverse (const size_t * p, unsigned int * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_UINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ulong.h
new file mode 100644
index 00000000..0084c506
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ulong.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_ULONG_H__
+#define __GSL_PERMUTE_ULONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_ulong (const size_t * p, unsigned long * data, const size_t stride, const size_t n);
+int gsl_permute_ulong_inverse (const size_t * p, unsigned long * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_ULONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ushort.h
new file mode 100644
index 00000000..eff079a5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_ushort.h
@@ -0,0 +1,44 @@
+/* permutation/gsl_permute_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_USHORT_H__
+#define __GSL_PERMUTE_USHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_ushort (const size_t * p, unsigned short * data, const size_t stride, const size_t n);
+int gsl_permute_ushort_inverse (const size_t * p, unsigned short * data, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_USHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector.h
new file mode 100644
index 00000000..4369e495
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector.h
@@ -0,0 +1,24 @@
+#ifndef __GSL_PERMUTE_VECTOR_H__
+#define __GSL_PERMUTE_VECTOR_H__
+
+#include <gsl/gsl_permute_vector_complex_long_double.h>
+#include <gsl/gsl_permute_vector_complex_double.h>
+#include <gsl/gsl_permute_vector_complex_float.h>
+
+#include <gsl/gsl_permute_vector_long_double.h>
+#include <gsl/gsl_permute_vector_double.h>
+#include <gsl/gsl_permute_vector_float.h>
+
+#include <gsl/gsl_permute_vector_ulong.h>
+#include <gsl/gsl_permute_vector_long.h>
+
+#include <gsl/gsl_permute_vector_uint.h>
+#include <gsl/gsl_permute_vector_int.h>
+
+#include <gsl/gsl_permute_vector_ushort.h>
+#include <gsl/gsl_permute_vector_short.h>
+
+#include <gsl/gsl_permute_vector_uchar.h>
+#include <gsl/gsl_permute_vector_char.h>
+
+#endif /* __GSL_PERMUTE_VECTOR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_char.h
new file mode 100644
index 00000000..15278edd
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_char.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_CHAR_H__
+#define __GSL_PERMUTE_VECTOR_CHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_char.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_char (const gsl_permutation * p, gsl_vector_char * v);
+int gsl_permute_vector_char_inverse (const gsl_permutation * p, gsl_vector_char * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_CHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_double.h
new file mode 100644
index 00000000..60558e21
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_double.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_complex_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__
+#define __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_complex_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_complex (const gsl_permutation * p, gsl_vector_complex * v);
+int gsl_permute_vector_complex_inverse (const gsl_permutation * p, gsl_vector_complex * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_float.h
new file mode 100644
index 00000000..b08696bc
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_float.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_complex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__
+#define __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_complex_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_complex_float (const gsl_permutation * p, gsl_vector_complex_float * v);
+int gsl_permute_vector_complex_float_inverse (const gsl_permutation * p, gsl_vector_complex_float * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_long_double.h
new file mode 100644
index 00000000..c19ac25d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_complex_long_double.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_complex_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__
+#define __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_complex_long_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_complex_long_double (const gsl_permutation * p, gsl_vector_complex_long_double * v);
+int gsl_permute_vector_complex_long_double_inverse (const gsl_permutation * p, gsl_vector_complex_long_double * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_COMPLEX_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_double.h
new file mode 100644
index 00000000..65f61674
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_double.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_DOUBLE_H__
+#define __GSL_PERMUTE_VECTOR_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector (const gsl_permutation * p, gsl_vector * v);
+int gsl_permute_vector_inverse (const gsl_permutation * p, gsl_vector * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_float.h
new file mode 100644
index 00000000..bdd9d1a6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_float.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_FLOAT_H__
+#define __GSL_PERMUTE_VECTOR_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_float (const gsl_permutation * p, gsl_vector_float * v);
+int gsl_permute_vector_float_inverse (const gsl_permutation * p, gsl_vector_float * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_int.h
new file mode 100644
index 00000000..3316d504
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_int.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_INT_H__
+#define __GSL_PERMUTE_VECTOR_INT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_int.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_int (const gsl_permutation * p, gsl_vector_int * v);
+int gsl_permute_vector_int_inverse (const gsl_permutation * p, gsl_vector_int * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long.h
new file mode 100644
index 00000000..291f949b
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_LONG_H__
+#define __GSL_PERMUTE_VECTOR_LONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_long.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_long (const gsl_permutation * p, gsl_vector_long * v);
+int gsl_permute_vector_long_inverse (const gsl_permutation * p, gsl_vector_long * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_LONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long_double.h
new file mode 100644
index 00000000..a6b02960
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_long_double.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__
+#define __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_long_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_long_double (const gsl_permutation * p, gsl_vector_long_double * v);
+int gsl_permute_vector_long_double_inverse (const gsl_permutation * p, gsl_vector_long_double * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_short.h
new file mode 100644
index 00000000..cd0dd6b4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_short.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_SHORT_H__
+#define __GSL_PERMUTE_VECTOR_SHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_short.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_short (const gsl_permutation * p, gsl_vector_short * v);
+int gsl_permute_vector_short_inverse (const gsl_permutation * p, gsl_vector_short * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_SHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uchar.h
new file mode 100644
index 00000000..df069a0a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uchar.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_UCHAR_H__
+#define __GSL_PERMUTE_VECTOR_UCHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_uchar.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_uchar (const gsl_permutation * p, gsl_vector_uchar * v);
+int gsl_permute_vector_uchar_inverse (const gsl_permutation * p, gsl_vector_uchar * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_UCHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uint.h
new file mode 100644
index 00000000..ee5218af
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_uint.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_UINT_H__
+#define __GSL_PERMUTE_VECTOR_UINT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_uint.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_uint (const gsl_permutation * p, gsl_vector_uint * v);
+int gsl_permute_vector_uint_inverse (const gsl_permutation * p, gsl_vector_uint * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_UINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ulong.h
new file mode 100644
index 00000000..e536d9a8
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ulong.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_ULONG_H__
+#define __GSL_PERMUTE_VECTOR_ULONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_ulong.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_ulong (const gsl_permutation * p, gsl_vector_ulong * v);
+int gsl_permute_vector_ulong_inverse (const gsl_permutation * p, gsl_vector_ulong * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_ULONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ushort.h
new file mode 100644
index 00000000..7533ba00
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_permute_vector_ushort.h
@@ -0,0 +1,45 @@
+/* permutation/gsl_permute_vector_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_PERMUTE_VECTOR_USHORT_H__
+#define __GSL_PERMUTE_VECTOR_USHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_ushort.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_permute_vector_ushort (const gsl_permutation * p, gsl_vector_ushort * v);
+int gsl_permute_vector_ushort_inverse (const gsl_permutation * p, gsl_vector_ushort * v);
+
+__END_DECLS
+
+#endif /* __GSL_PERMUTE_VECTOR_USHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_poly.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_poly.h
new file mode 100644
index 00000000..2352857f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_poly.h
@@ -0,0 +1,183 @@
+/* poly/gsl_poly.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_POLY_H__
+#define __GSL_POLY_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_complex.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Evaluate polynomial
+ *
+ * c[0] + c[1] x + c[2] x^2 + ... + c[len-1] x^(len-1)
+ *
+ * exceptions: none
+ */
+
+/* real polynomial, real x */
+INLINE_DECL double gsl_poly_eval(const double c[], const int len, const double x);
+
+/* real polynomial, complex x */
+INLINE_DECL gsl_complex gsl_poly_complex_eval (const double c [], const int len, const gsl_complex z);
+
+/* complex polynomial, complex x */
+INLINE_DECL gsl_complex gsl_complex_poly_complex_eval (const gsl_complex c [], const int len, const gsl_complex z);
+
+int gsl_poly_eval_derivs(const double c[], const size_t lenc, const double x, double res[], const size_t lenres);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+double
+gsl_poly_eval(const double c[], const int len, const double x)
+{
+ int i;
+ double ans = c[len-1];
+ for(i=len-1; i>0; i--) ans = c[i-1] + x * ans;
+ return ans;
+}
+
+INLINE_FUN
+gsl_complex
+gsl_poly_complex_eval(const double c[], const int len, const gsl_complex z)
+{
+ int i;
+ gsl_complex ans;
+ GSL_SET_COMPLEX (&ans, c[len-1], 0.0);
+ for(i=len-1; i>0; i--) {
+ /* The following three lines are equivalent to
+ ans = gsl_complex_add_real (gsl_complex_mul (z, ans), c[i-1]);
+ but faster */
+ double tmp = c[i-1] + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans);
+ GSL_SET_IMAG (&ans, GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans));
+ GSL_SET_REAL (&ans, tmp);
+ }
+ return ans;
+}
+
+INLINE_FUN
+gsl_complex
+gsl_complex_poly_complex_eval(const gsl_complex c[], const int len, const gsl_complex z)
+{
+ int i;
+ gsl_complex ans = c[len-1];
+ for(i=len-1; i>0; i--) {
+ /* The following three lines are equivalent to
+ ans = gsl_complex_add (c[i-1], gsl_complex_mul (x, ans));
+ but faster */
+ double tmp = GSL_REAL (c[i-1]) + GSL_REAL (z) * GSL_REAL (ans) - GSL_IMAG (z) * GSL_IMAG (ans);
+ GSL_SET_IMAG (&ans, GSL_IMAG (c[i-1]) + GSL_IMAG (z) * GSL_REAL (ans) + GSL_REAL (z) * GSL_IMAG (ans));
+ GSL_SET_REAL (&ans, tmp);
+ }
+ return ans;
+}
+#endif /* HAVE_INLINE */
+
+/* Work with divided-difference polynomials, Abramowitz & Stegun 25.2.26 */
+
+int
+gsl_poly_dd_init (double dd[], const double x[], const double y[],
+ size_t size);
+
+INLINE_DECL double
+gsl_poly_dd_eval (const double dd[], const double xa[], const size_t size, const double x);
+
+#ifdef HAVE_INLINE
+INLINE_FUN
+double
+gsl_poly_dd_eval(const double dd[], const double xa[], const size_t size, const double x)
+{
+ size_t i;
+ double y = dd[size - 1];
+ for (i = size - 1; i--;) y = dd[i] + (x - xa[i]) * y;
+ return y;
+}
+#endif /* HAVE_INLINE */
+
+
+int
+gsl_poly_dd_taylor (double c[], double xp,
+ const double dd[], const double x[], size_t size,
+ double w[]);
+
+int
+gsl_poly_dd_hermite_init (double dd[], double z[], const double xa[], const double ya[],
+ const double dya[], const size_t size);
+
+/* Solve for real or complex roots of the standard quadratic equation,
+ * returning the number of real roots.
+ *
+ * Roots are returned ordered.
+ */
+int gsl_poly_solve_quadratic (double a, double b, double c,
+ double * x0, double * x1);
+
+int
+gsl_poly_complex_solve_quadratic (double a, double b, double c,
+ gsl_complex * z0, gsl_complex * z1);
+
+
+/* Solve for real roots of the cubic equation
+ * x^3 + a x^2 + b x + c = 0, returning the
+ * number of real roots.
+ *
+ * Roots are returned ordered.
+ */
+int gsl_poly_solve_cubic (double a, double b, double c,
+ double * x0, double * x1, double * x2);
+
+int
+gsl_poly_complex_solve_cubic (double a, double b, double c,
+ gsl_complex * z0, gsl_complex * z1,
+ gsl_complex * z2);
+
+
+/* Solve for the complex roots of a general real polynomial */
+
+typedef struct
+{
+ size_t nc ;
+ double * matrix ;
+}
+gsl_poly_complex_workspace ;
+
+gsl_poly_complex_workspace * gsl_poly_complex_workspace_alloc (size_t n);
+void gsl_poly_complex_workspace_free (gsl_poly_complex_workspace * w);
+
+int
+gsl_poly_complex_solve (const double * a, size_t n,
+ gsl_poly_complex_workspace * w,
+ gsl_complex_packed_ptr z);
+
+__END_DECLS
+
+#endif /* __GSL_POLY_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_pow_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_pow_int.h
new file mode 100644
index 00000000..6aa01fbc
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_pow_int.h
@@ -0,0 +1,61 @@
+/* gsl_pow_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_POW_INT_H__
+#define __GSL_POW_INT_H__
+#include <gsl/gsl_inline.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+INLINE_DECL double gsl_pow_2(const double x);
+INLINE_DECL double gsl_pow_3(const double x);
+INLINE_DECL double gsl_pow_4(const double x);
+INLINE_DECL double gsl_pow_5(const double x);
+INLINE_DECL double gsl_pow_6(const double x);
+INLINE_DECL double gsl_pow_7(const double x);
+INLINE_DECL double gsl_pow_8(const double x);
+INLINE_DECL double gsl_pow_9(const double x);
+
+#ifdef HAVE_INLINE
+INLINE_FUN double gsl_pow_2(const double x) { return x*x; }
+INLINE_FUN double gsl_pow_3(const double x) { return x*x*x; }
+INLINE_FUN double gsl_pow_4(const double x) { double x2 = x*x; return x2*x2; }
+INLINE_FUN double gsl_pow_5(const double x) { double x2 = x*x; return x2*x2*x; }
+INLINE_FUN double gsl_pow_6(const double x) { double x2 = x*x; return x2*x2*x2; }
+INLINE_FUN double gsl_pow_7(const double x) { double x3 = x*x*x; return x3*x3*x; }
+INLINE_FUN double gsl_pow_8(const double x) { double x2 = x*x; double x4 = x2*x2; return x4*x4; }
+INLINE_FUN double gsl_pow_9(const double x) { double x3 = x*x*x; return x3*x3*x3; }
+#endif
+
+double gsl_pow_int(double x, int n);
+double gsl_pow_uint(double x, unsigned int n);
+
+__END_DECLS
+
+#endif /* __GSL_POW_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_precision.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_precision.h
new file mode 100644
index 00000000..97a204ea
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_precision.h
@@ -0,0 +1,66 @@
+/* gsl_precision.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: B. Gough and G. Jungman */
+
+#ifndef __GSL_PRECISION_H__
+#define __GSL_PRECISION_H__
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* A type for the precision indicator.
+ * This is mainly for pedagogy.
+ */
+typedef unsigned int gsl_prec_t;
+
+
+/* The number of precision types.
+ * Remember that precision-mode
+ * can index an array.
+ */
+#define _GSL_PREC_T_NUM 3
+
+
+/* Arrays containing derived
+ * precision constants for the
+ * different precision levels.
+ */
+GSL_VAR const double gsl_prec_eps[];
+GSL_VAR const double gsl_prec_sqrt_eps[];
+GSL_VAR const double gsl_prec_root3_eps[];
+GSL_VAR const double gsl_prec_root4_eps[];
+GSL_VAR const double gsl_prec_root5_eps[];
+GSL_VAR const double gsl_prec_root6_eps[];
+
+
+__END_DECLS
+
+#endif /* __GSL_PRECISION_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_qrng.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_qrng.h
new file mode 100644
index 00000000..47de500f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_qrng.h
@@ -0,0 +1,111 @@
+/* Author: G. Jungman + modifications from O. Teytaud
+ */
+#ifndef __GSL_QRNG_H__
+#define __GSL_QRNG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Once again, more inane C-style OOP... kill me now. */
+
+/* Structure describing a type of generator.
+ */
+typedef struct
+{
+ const char * name;
+ unsigned int max_dimension;
+ size_t (*state_size) (unsigned int dimension);
+ int (*init_state) (void * state, unsigned int dimension);
+ int (*get) (void * state, unsigned int dimension, double x[]);
+}
+gsl_qrng_type;
+
+/* Structure describing a generator instance of a
+ * specified type, with generator-specific state info
+ * and dimension-specific info.
+ */
+typedef struct
+{
+ const gsl_qrng_type * type;
+ unsigned int dimension;
+ size_t state_size;
+ void * state;
+}
+gsl_qrng;
+
+
+/* Supported generator types.
+ */
+GSL_VAR const gsl_qrng_type * gsl_qrng_niederreiter_2;
+GSL_VAR const gsl_qrng_type * gsl_qrng_sobol;
+GSL_VAR const gsl_qrng_type * gsl_qrng_halton;
+GSL_VAR const gsl_qrng_type * gsl_qrng_reversehalton;
+
+
+/* Allocate and initialize a generator
+ * of the specified type, in the given
+ * space dimension.
+ */
+gsl_qrng * gsl_qrng_alloc (const gsl_qrng_type * T, unsigned int dimension);
+
+
+/* Copy a generator. */
+int gsl_qrng_memcpy (gsl_qrng * dest, const gsl_qrng * src);
+
+
+/* Clone a generator. */
+gsl_qrng * gsl_qrng_clone (const gsl_qrng * q);
+
+
+/* Free a generator. */
+void gsl_qrng_free (gsl_qrng * q);
+
+
+/* Intialize a generator. */
+void gsl_qrng_init (gsl_qrng * q);
+
+
+/* Get the standardized name of the generator. */
+const char * gsl_qrng_name (const gsl_qrng * q);
+
+
+/* ISN'T THIS CONFUSING FOR PEOPLE?
+ WHAT IF SOMEBODY TRIES TO COPY WITH THIS ???
+ */
+size_t gsl_qrng_size (const gsl_qrng * q);
+
+
+void * gsl_qrng_state (const gsl_qrng * q);
+
+
+/* Retrieve next vector in sequence. */
+INLINE_DECL int gsl_qrng_get (const gsl_qrng * q, double x[]);
+
+#ifdef HAVE_INLINE
+INLINE_FUN int gsl_qrng_get (const gsl_qrng * q, double x[])
+{
+ return (q->type->get) (q->state, q->dimension, x);
+}
+
+#endif /* HAVE_INLINE */
+
+
+__END_DECLS
+
+
+#endif /* !__GSL_QRNG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_randist.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_randist.h
new file mode 100644
index 00000000..6f4b0e31
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_randist.h
@@ -0,0 +1,185 @@
+/* randist/gsl_randist.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 James Theiler, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_RANDIST_H__
+#define __GSL_RANDIST_H__
+#include <gsl/gsl_rng.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+unsigned int gsl_ran_bernoulli (const gsl_rng * r, double p);
+double gsl_ran_bernoulli_pdf (const unsigned int k, double p);
+
+double gsl_ran_beta (const gsl_rng * r, const double a, const double b);
+double gsl_ran_beta_pdf (const double x, const double a, const double b);
+
+unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n);
+unsigned int gsl_ran_binomial_knuth (const gsl_rng * r, double p, unsigned int n);
+unsigned int gsl_ran_binomial_tpe (const gsl_rng * r, double p, unsigned int n);
+double gsl_ran_binomial_pdf (const unsigned int k, const double p, const unsigned int n);
+
+double gsl_ran_exponential (const gsl_rng * r, const double mu);
+double gsl_ran_exponential_pdf (const double x, const double mu);
+
+double gsl_ran_exppow (const gsl_rng * r, const double a, const double b);
+double gsl_ran_exppow_pdf (const double x, const double a, const double b);
+
+double gsl_ran_cauchy (const gsl_rng * r, const double a);
+double gsl_ran_cauchy_pdf (const double x, const double a);
+
+double gsl_ran_chisq (const gsl_rng * r, const double nu);
+double gsl_ran_chisq_pdf (const double x, const double nu);
+
+void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, const double alpha[], double theta[]);
+double gsl_ran_dirichlet_pdf (const size_t K, const double alpha[], const double theta[]);
+double gsl_ran_dirichlet_lnpdf (const size_t K, const double alpha[], const double theta[]);
+
+double gsl_ran_erlang (const gsl_rng * r, const double a, const double n);
+double gsl_ran_erlang_pdf (const double x, const double a, const double n);
+
+double gsl_ran_fdist (const gsl_rng * r, const double nu1, const double nu2);
+double gsl_ran_fdist_pdf (const double x, const double nu1, const double nu2);
+
+double gsl_ran_flat (const gsl_rng * r, const double a, const double b);
+double gsl_ran_flat_pdf (double x, const double a, const double b);
+
+double gsl_ran_gamma (const gsl_rng * r, const double a, const double b);
+double gsl_ran_gamma_int (const gsl_rng * r, const unsigned int a);
+double gsl_ran_gamma_pdf (const double x, const double a, const double b);
+double gsl_ran_gamma_mt (const gsl_rng * r, const double a, const double b);
+double gsl_ran_gamma_knuth (const gsl_rng * r, const double a, const double b);
+
+double gsl_ran_gaussian (const gsl_rng * r, const double sigma);
+double gsl_ran_gaussian_ratio_method (const gsl_rng * r, const double sigma);
+double gsl_ran_gaussian_ziggurat (const gsl_rng * r, const double sigma);
+double gsl_ran_gaussian_pdf (const double x, const double sigma);
+
+double gsl_ran_ugaussian (const gsl_rng * r);
+double gsl_ran_ugaussian_ratio_method (const gsl_rng * r);
+double gsl_ran_ugaussian_pdf (const double x);
+
+double gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma);
+double gsl_ran_gaussian_tail_pdf (const double x, const double a, const double sigma);
+
+double gsl_ran_ugaussian_tail (const gsl_rng * r, const double a);
+double gsl_ran_ugaussian_tail_pdf (const double x, const double a);
+
+void gsl_ran_bivariate_gaussian (const gsl_rng * r, double sigma_x, double sigma_y, double rho, double *x, double *y);
+double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, const double sigma_x, const double sigma_y, const double rho);
+
+double gsl_ran_landau (const gsl_rng * r);
+double gsl_ran_landau_pdf (const double x);
+
+unsigned int gsl_ran_geometric (const gsl_rng * r, const double p);
+double gsl_ran_geometric_pdf (const unsigned int k, const double p);
+
+unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, unsigned int t);
+double gsl_ran_hypergeometric_pdf (const unsigned int k, const unsigned int n1, const unsigned int n2, unsigned int t);
+
+double gsl_ran_gumbel1 (const gsl_rng * r, const double a, const double b);
+double gsl_ran_gumbel1_pdf (const double x, const double a, const double b);
+
+double gsl_ran_gumbel2 (const gsl_rng * r, const double a, const double b);
+double gsl_ran_gumbel2_pdf (const double x, const double a, const double b);
+
+double gsl_ran_logistic (const gsl_rng * r, const double a);
+double gsl_ran_logistic_pdf (const double x, const double a);
+
+double gsl_ran_lognormal (const gsl_rng * r, const double zeta, const double sigma);
+double gsl_ran_lognormal_pdf (const double x, const double zeta, const double sigma);
+
+unsigned int gsl_ran_logarithmic (const gsl_rng * r, const double p);
+double gsl_ran_logarithmic_pdf (const unsigned int k, const double p);
+
+void gsl_ran_multinomial (const gsl_rng * r, const size_t K,
+ const unsigned int N, const double p[],
+ unsigned int n[] );
+double gsl_ran_multinomial_pdf (const size_t K,
+ const double p[], const unsigned int n[] );
+double gsl_ran_multinomial_lnpdf (const size_t K,
+ const double p[], const unsigned int n[] );
+
+
+unsigned int gsl_ran_negative_binomial (const gsl_rng * r, double p, double n);
+double gsl_ran_negative_binomial_pdf (const unsigned int k, const double p, double n);
+
+unsigned int gsl_ran_pascal (const gsl_rng * r, double p, unsigned int n);
+double gsl_ran_pascal_pdf (const unsigned int k, const double p, unsigned int n);
+
+double gsl_ran_pareto (const gsl_rng * r, double a, const double b);
+double gsl_ran_pareto_pdf (const double x, const double a, const double b);
+
+unsigned int gsl_ran_poisson (const gsl_rng * r, double mu);
+void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[],
+ double mu);
+double gsl_ran_poisson_pdf (const unsigned int k, const double mu);
+
+double gsl_ran_rayleigh (const gsl_rng * r, const double sigma);
+double gsl_ran_rayleigh_pdf (const double x, const double sigma);
+
+double gsl_ran_rayleigh_tail (const gsl_rng * r, const double a, const double sigma);
+double gsl_ran_rayleigh_tail_pdf (const double x, const double a, const double sigma);
+
+double gsl_ran_tdist (const gsl_rng * r, const double nu);
+double gsl_ran_tdist_pdf (const double x, const double nu);
+
+double gsl_ran_laplace (const gsl_rng * r, const double a);
+double gsl_ran_laplace_pdf (const double x, const double a);
+
+double gsl_ran_levy (const gsl_rng * r, const double c, const double alpha);
+double gsl_ran_levy_skew (const gsl_rng * r, const double c, const double alpha, const double beta);
+
+double gsl_ran_weibull (const gsl_rng * r, const double a, const double b);
+double gsl_ran_weibull_pdf (const double x, const double a, const double b);
+
+void gsl_ran_dir_2d (const gsl_rng * r, double * x, double * y);
+void gsl_ran_dir_2d_trig_method (const gsl_rng * r, double * x, double * y);
+void gsl_ran_dir_3d (const gsl_rng * r, double * x, double * y, double * z);
+void gsl_ran_dir_nd (const gsl_rng * r, size_t n, double * x);
+
+void gsl_ran_shuffle (const gsl_rng * r, void * base, size_t nmembm, size_t size);
+int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
+void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, size_t n, size_t size) ;
+
+
+typedef struct { /* struct for Walker algorithm */
+ size_t K;
+ size_t *A;
+ double *F;
+} gsl_ran_discrete_t;
+
+gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, const double *P);
+void gsl_ran_discrete_free(gsl_ran_discrete_t *g);
+size_t gsl_ran_discrete (const gsl_rng *r, const gsl_ran_discrete_t *g);
+double gsl_ran_discrete_pdf (size_t k, const gsl_ran_discrete_t *g);
+
+
+__END_DECLS
+
+#endif /* __GSL_RANDIST_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_rng.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_rng.h
new file mode 100644
index 00000000..4ec55911
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_rng.h
@@ -0,0 +1,217 @@
+/* rng/gsl_rng.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004, 2007 James Theiler, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_RNG_H__
+#define __GSL_RNG_H__
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+ {
+ const char *name;
+ unsigned long int max;
+ unsigned long int min;
+ size_t size;
+ void (*set) (void *state, unsigned long int seed);
+ unsigned long int (*get) (void *state);
+ double (*get_double) (void *state);
+ }
+gsl_rng_type;
+
+typedef struct
+ {
+ const gsl_rng_type * type;
+ void *state;
+ }
+gsl_rng;
+
+
+/* These structs also need to appear in default.c so you can select
+ them via the environment variable GSL_RNG_TYPE */
+
+GSL_VAR const gsl_rng_type *gsl_rng_borosh13;
+GSL_VAR const gsl_rng_type *gsl_rng_coveyou;
+GSL_VAR const gsl_rng_type *gsl_rng_cmrg;
+GSL_VAR const gsl_rng_type *gsl_rng_fishman18;
+GSL_VAR const gsl_rng_type *gsl_rng_fishman20;
+GSL_VAR const gsl_rng_type *gsl_rng_fishman2x;
+GSL_VAR const gsl_rng_type *gsl_rng_gfsr4;
+GSL_VAR const gsl_rng_type *gsl_rng_knuthran;
+GSL_VAR const gsl_rng_type *gsl_rng_knuthran2;
+GSL_VAR const gsl_rng_type *gsl_rng_knuthran2002;
+GSL_VAR const gsl_rng_type *gsl_rng_lecuyer21;
+GSL_VAR const gsl_rng_type *gsl_rng_minstd;
+GSL_VAR const gsl_rng_type *gsl_rng_mrg;
+GSL_VAR const gsl_rng_type *gsl_rng_mt19937;
+GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1999;
+GSL_VAR const gsl_rng_type *gsl_rng_mt19937_1998;
+GSL_VAR const gsl_rng_type *gsl_rng_r250;
+GSL_VAR const gsl_rng_type *gsl_rng_ran0;
+GSL_VAR const gsl_rng_type *gsl_rng_ran1;
+GSL_VAR const gsl_rng_type *gsl_rng_ran2;
+GSL_VAR const gsl_rng_type *gsl_rng_ran3;
+GSL_VAR const gsl_rng_type *gsl_rng_rand;
+GSL_VAR const gsl_rng_type *gsl_rng_rand48;
+GSL_VAR const gsl_rng_type *gsl_rng_random128_bsd;
+GSL_VAR const gsl_rng_type *gsl_rng_random128_glibc2;
+GSL_VAR const gsl_rng_type *gsl_rng_random128_libc5;
+GSL_VAR const gsl_rng_type *gsl_rng_random256_bsd;
+GSL_VAR const gsl_rng_type *gsl_rng_random256_glibc2;
+GSL_VAR const gsl_rng_type *gsl_rng_random256_libc5;
+GSL_VAR const gsl_rng_type *gsl_rng_random32_bsd;
+GSL_VAR const gsl_rng_type *gsl_rng_random32_glibc2;
+GSL_VAR const gsl_rng_type *gsl_rng_random32_libc5;
+GSL_VAR const gsl_rng_type *gsl_rng_random64_bsd;
+GSL_VAR const gsl_rng_type *gsl_rng_random64_glibc2;
+GSL_VAR const gsl_rng_type *gsl_rng_random64_libc5;
+GSL_VAR const gsl_rng_type *gsl_rng_random8_bsd;
+GSL_VAR const gsl_rng_type *gsl_rng_random8_glibc2;
+GSL_VAR const gsl_rng_type *gsl_rng_random8_libc5;
+GSL_VAR const gsl_rng_type *gsl_rng_random_bsd;
+GSL_VAR const gsl_rng_type *gsl_rng_random_glibc2;
+GSL_VAR const gsl_rng_type *gsl_rng_random_libc5;
+GSL_VAR const gsl_rng_type *gsl_rng_randu;
+GSL_VAR const gsl_rng_type *gsl_rng_ranf;
+GSL_VAR const gsl_rng_type *gsl_rng_ranlux;
+GSL_VAR const gsl_rng_type *gsl_rng_ranlux389;
+GSL_VAR const gsl_rng_type *gsl_rng_ranlxd1;
+GSL_VAR const gsl_rng_type *gsl_rng_ranlxd2;
+GSL_VAR const gsl_rng_type *gsl_rng_ranlxs0;
+GSL_VAR const gsl_rng_type *gsl_rng_ranlxs1;
+GSL_VAR const gsl_rng_type *gsl_rng_ranlxs2;
+GSL_VAR const gsl_rng_type *gsl_rng_ranmar;
+GSL_VAR const gsl_rng_type *gsl_rng_slatec;
+GSL_VAR const gsl_rng_type *gsl_rng_taus;
+GSL_VAR const gsl_rng_type *gsl_rng_taus2;
+GSL_VAR const gsl_rng_type *gsl_rng_taus113;
+GSL_VAR const gsl_rng_type *gsl_rng_transputer;
+GSL_VAR const gsl_rng_type *gsl_rng_tt800;
+GSL_VAR const gsl_rng_type *gsl_rng_uni;
+GSL_VAR const gsl_rng_type *gsl_rng_uni32;
+GSL_VAR const gsl_rng_type *gsl_rng_vax;
+GSL_VAR const gsl_rng_type *gsl_rng_waterman14;
+GSL_VAR const gsl_rng_type *gsl_rng_zuf;
+
+const gsl_rng_type ** gsl_rng_types_setup(void);
+
+GSL_VAR const gsl_rng_type *gsl_rng_default;
+GSL_VAR unsigned long int gsl_rng_default_seed;
+
+gsl_rng *gsl_rng_alloc (const gsl_rng_type * T);
+int gsl_rng_memcpy (gsl_rng * dest, const gsl_rng * src);
+gsl_rng *gsl_rng_clone (const gsl_rng * r);
+
+void gsl_rng_free (gsl_rng * r);
+
+void gsl_rng_set (const gsl_rng * r, unsigned long int seed);
+unsigned long int gsl_rng_max (const gsl_rng * r);
+unsigned long int gsl_rng_min (const gsl_rng * r);
+const char *gsl_rng_name (const gsl_rng * r);
+
+int gsl_rng_fread (FILE * stream, gsl_rng * r);
+int gsl_rng_fwrite (FILE * stream, const gsl_rng * r);
+
+size_t gsl_rng_size (const gsl_rng * r);
+void * gsl_rng_state (const gsl_rng * r);
+
+void gsl_rng_print_state (const gsl_rng * r);
+
+const gsl_rng_type * gsl_rng_env_setup (void);
+
+INLINE_DECL unsigned long int gsl_rng_get (const gsl_rng * r);
+INLINE_DECL double gsl_rng_uniform (const gsl_rng * r);
+INLINE_DECL double gsl_rng_uniform_pos (const gsl_rng * r);
+INLINE_DECL unsigned long int gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN unsigned long int
+gsl_rng_get (const gsl_rng * r)
+{
+ return (r->type->get) (r->state);
+}
+
+INLINE_FUN double
+gsl_rng_uniform (const gsl_rng * r)
+{
+ return (r->type->get_double) (r->state);
+}
+
+INLINE_FUN double
+gsl_rng_uniform_pos (const gsl_rng * r)
+{
+ double x ;
+ do
+ {
+ x = (r->type->get_double) (r->state) ;
+ }
+ while (x == 0) ;
+
+ return x ;
+}
+
+/* Note: to avoid integer overflow in (range+1) we work with scale =
+ range/n = (max-min)/n rather than scale=(max-min+1)/n, this reduces
+ efficiency slightly but avoids having to check for the out of range
+ value. Note that range is typically O(2^32) so the addition of 1
+ is negligible in most usage. */
+
+INLINE_FUN unsigned long int
+gsl_rng_uniform_int (const gsl_rng * r, unsigned long int n)
+{
+ unsigned long int offset = r->type->min;
+ unsigned long int range = r->type->max - offset;
+ unsigned long int scale;
+ unsigned long int k;
+
+ if (n > range || n == 0)
+ {
+ GSL_ERROR_VAL ("invalid n, either 0 or exceeds maximum value of generator",
+ GSL_EINVAL, 0) ;
+ }
+
+ scale = range / n;
+
+ do
+ {
+ k = (((r->type->get) (r->state)) - offset) / scale;
+ }
+ while (k >= n);
+
+ return k;
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_RNG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_roots.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_roots.h
new file mode 100644
index 00000000..46e45870
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_roots.h
@@ -0,0 +1,127 @@
+/* roots/gsl_roots.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Reid Priedhorsky, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_ROOTS_H__
+#define __GSL_ROOTS_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_math.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+ {
+ const char *name;
+ size_t size;
+ int (*set) (void *state, gsl_function * f, double * root, double x_lower, double x_upper);
+ int (*iterate) (void *state, gsl_function * f, double * root, double * x_lower, double * x_upper);
+ }
+gsl_root_fsolver_type;
+
+typedef struct
+ {
+ const gsl_root_fsolver_type * type;
+ gsl_function * function ;
+ double root ;
+ double x_lower;
+ double x_upper;
+ void *state;
+ }
+gsl_root_fsolver;
+
+typedef struct
+ {
+ const char *name;
+ size_t size;
+ int (*set) (void *state, gsl_function_fdf * f, double * root);
+ int (*iterate) (void *state, gsl_function_fdf * f, double * root);
+ }
+gsl_root_fdfsolver_type;
+
+typedef struct
+ {
+ const gsl_root_fdfsolver_type * type;
+ gsl_function_fdf * fdf ;
+ double root ;
+ void *state;
+ }
+gsl_root_fdfsolver;
+
+gsl_root_fsolver *
+gsl_root_fsolver_alloc (const gsl_root_fsolver_type * T);
+void gsl_root_fsolver_free (gsl_root_fsolver * s);
+
+int gsl_root_fsolver_set (gsl_root_fsolver * s,
+ gsl_function * f,
+ double x_lower, double x_upper);
+
+int gsl_root_fsolver_iterate (gsl_root_fsolver * s);
+
+const char * gsl_root_fsolver_name (const gsl_root_fsolver * s);
+double gsl_root_fsolver_root (const gsl_root_fsolver * s);
+double gsl_root_fsolver_x_lower (const gsl_root_fsolver * s);
+double gsl_root_fsolver_x_upper (const gsl_root_fsolver * s);
+
+
+gsl_root_fdfsolver *
+gsl_root_fdfsolver_alloc (const gsl_root_fdfsolver_type * T);
+
+int
+gsl_root_fdfsolver_set (gsl_root_fdfsolver * s,
+ gsl_function_fdf * fdf, double root);
+
+int
+gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * s);
+
+void
+gsl_root_fdfsolver_free (gsl_root_fdfsolver * s);
+
+const char * gsl_root_fdfsolver_name (const gsl_root_fdfsolver * s);
+double gsl_root_fdfsolver_root (const gsl_root_fdfsolver * s);
+
+int
+gsl_root_test_interval (double x_lower, double x_upper, double epsabs, double epsrel);
+
+int
+gsl_root_test_residual (double f, double epsabs);
+
+int
+gsl_root_test_delta (double x1, double x0, double epsabs, double epsrel);
+
+GSL_VAR const gsl_root_fsolver_type * gsl_root_fsolver_bisection;
+GSL_VAR const gsl_root_fsolver_type * gsl_root_fsolver_brent;
+GSL_VAR const gsl_root_fsolver_type * gsl_root_fsolver_falsepos;
+GSL_VAR const gsl_root_fdfsolver_type * gsl_root_fdfsolver_newton;
+GSL_VAR const gsl_root_fdfsolver_type * gsl_root_fdfsolver_secant;
+GSL_VAR const gsl_root_fdfsolver_type * gsl_root_fdfsolver_steffenson;
+
+__END_DECLS
+
+#endif /* __GSL_ROOTS_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_rstat.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_rstat.h
new file mode 100644
index 00000000..48af04f5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_rstat.h
@@ -0,0 +1,79 @@
+/* rstat/gsl_rstat.h
+ *
+ * Copyright (C) 2015 Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_RSTAT_H__
+#define __GSL_RSTAT_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ double p; /* p-quantile */
+ double q[5]; /* heights q_i */
+ int npos[5]; /* positions n_i */
+ double np[5]; /* desired positions n_i' */
+ double dnp[5]; /* increments dn_i' */
+ size_t n; /* number of data added */
+} gsl_rstat_quantile_workspace;
+
+gsl_rstat_quantile_workspace *gsl_rstat_quantile_alloc(const double p);
+void gsl_rstat_quantile_free(gsl_rstat_quantile_workspace *w);
+int gsl_rstat_quantile_add(const double x, gsl_rstat_quantile_workspace *w);
+double gsl_rstat_quantile_get(gsl_rstat_quantile_workspace *w);
+
+typedef struct
+{
+ double min; /* minimum value added */
+ double max; /* maximum value added */
+ double mean; /* current mean */
+ double M2; /* M_k = sum_{i=1..n} [ x_i - mean_n ]^k */
+ double M3;
+ double M4;
+ size_t n; /* number of data points added */
+ gsl_rstat_quantile_workspace *median_workspace_p; /* median workspace */
+} gsl_rstat_workspace;
+
+gsl_rstat_workspace *gsl_rstat_alloc(void);
+void gsl_rstat_free(gsl_rstat_workspace *w);
+size_t gsl_rstat_n(gsl_rstat_workspace *w);
+int gsl_rstat_add(const double x, gsl_rstat_workspace *w);
+double gsl_rstat_min(gsl_rstat_workspace *w);
+double gsl_rstat_max(gsl_rstat_workspace *w);
+double gsl_rstat_mean(gsl_rstat_workspace *w);
+double gsl_rstat_variance(gsl_rstat_workspace *w);
+double gsl_rstat_sd(gsl_rstat_workspace *w);
+double gsl_rstat_sd_mean(gsl_rstat_workspace *w);
+double gsl_rstat_median(gsl_rstat_workspace *w);
+double gsl_rstat_skew(gsl_rstat_workspace *w);
+double gsl_rstat_kurtosis(gsl_rstat_workspace *w);
+int gsl_rstat_reset(gsl_rstat_workspace *w);
+
+__END_DECLS
+
+#endif /* __GSL_RSTAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf.h
new file mode 100644
index 00000000..643cf341
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf.h
@@ -0,0 +1,39 @@
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_H__
+#define __GSL_SF_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#include <gsl/gsl_sf_airy.h>
+#include <gsl/gsl_sf_bessel.h>
+#include <gsl/gsl_sf_clausen.h>
+#include <gsl/gsl_sf_coupling.h>
+#include <gsl/gsl_sf_coulomb.h>
+#include <gsl/gsl_sf_dawson.h>
+#include <gsl/gsl_sf_debye.h>
+#include <gsl/gsl_sf_dilog.h>
+#include <gsl/gsl_sf_elementary.h>
+#include <gsl/gsl_sf_ellint.h>
+#include <gsl/gsl_sf_elljac.h>
+#include <gsl/gsl_sf_erf.h>
+#include <gsl/gsl_sf_exp.h>
+#include <gsl/gsl_sf_expint.h>
+#include <gsl/gsl_sf_fermi_dirac.h>
+#include <gsl/gsl_sf_gamma.h>
+#include <gsl/gsl_sf_gegenbauer.h>
+#include <gsl/gsl_sf_hyperg.h>
+#include <gsl/gsl_sf_laguerre.h>
+#include <gsl/gsl_sf_lambert.h>
+#include <gsl/gsl_sf_legendre.h>
+#include <gsl/gsl_sf_log.h>
+#include <gsl/gsl_sf_mathieu.h>
+#include <gsl/gsl_sf_pow_int.h>
+#include <gsl/gsl_sf_psi.h>
+#include <gsl/gsl_sf_synchrotron.h>
+#include <gsl/gsl_sf_transport.h>
+#include <gsl/gsl_sf_trig.h>
+#include <gsl/gsl_sf_zeta.h>
+
+
+#endif /* __GSL_SF_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_airy.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_airy.h
new file mode 100644
index 00000000..70333830
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_airy.h
@@ -0,0 +1,139 @@
+/* specfunc/gsl_sf_airy.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_AIRY_H__
+#define __GSL_SF_AIRY_H__
+
+#include <gsl/gsl_mode.h>
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Airy function Ai(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_airy_Ai_e(const double x, const gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Ai(const double x, gsl_mode_t mode);
+
+
+/* Airy function Bi(x)
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_airy_Bi_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Bi(const double x, gsl_mode_t mode);
+
+
+/* scaled Ai(x):
+ * Ai(x) x < 0
+ * exp(+2/3 x^{3/2}) Ai(x) x > 0
+ *
+ * exceptions: none
+ */
+int gsl_sf_airy_Ai_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Ai_scaled(const double x, gsl_mode_t mode);
+
+
+/* scaled Bi(x):
+ * Bi(x) x < 0
+ * exp(-2/3 x^{3/2}) Bi(x) x > 0
+ *
+ * exceptions: none
+ */
+int gsl_sf_airy_Bi_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Bi_scaled(const double x, gsl_mode_t mode);
+
+
+/* derivative Ai'(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_airy_Ai_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Ai_deriv(const double x, gsl_mode_t mode);
+
+
+/* derivative Bi'(x)
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_airy_Bi_deriv_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Bi_deriv(const double x, gsl_mode_t mode);
+
+
+/* scaled derivative Ai'(x):
+ * Ai'(x) x < 0
+ * exp(+2/3 x^{3/2}) Ai'(x) x > 0
+ *
+ * exceptions: none
+ */
+int gsl_sf_airy_Ai_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Ai_deriv_scaled(const double x, gsl_mode_t mode);
+
+
+/* scaled derivative:
+ * Bi'(x) x < 0
+ * exp(-2/3 x^{3/2}) Bi'(x) x > 0
+ *
+ * exceptions: none
+ */
+int gsl_sf_airy_Bi_deriv_scaled_e(const double x, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_airy_Bi_deriv_scaled(const double x, gsl_mode_t mode);
+
+
+/* Zeros of Ai(x)
+ */
+int gsl_sf_airy_zero_Ai_e(unsigned int s, gsl_sf_result * result);
+double gsl_sf_airy_zero_Ai(unsigned int s);
+
+
+/* Zeros of Bi(x)
+ */
+int gsl_sf_airy_zero_Bi_e(unsigned int s, gsl_sf_result * result);
+double gsl_sf_airy_zero_Bi(unsigned int s);
+
+
+/* Zeros of Ai'(x)
+ */
+int gsl_sf_airy_zero_Ai_deriv_e(unsigned int s, gsl_sf_result * result);
+double gsl_sf_airy_zero_Ai_deriv(unsigned int s);
+
+
+/* Zeros of Bi'(x)
+ */
+int gsl_sf_airy_zero_Bi_deriv_e(unsigned int s, gsl_sf_result * result);
+double gsl_sf_airy_zero_Bi_deriv(unsigned int s);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_AIRY_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_bessel.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_bessel.h
new file mode 100644
index 00000000..d72957ae
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_bessel.h
@@ -0,0 +1,549 @@
+/* specfunc/gsl_sf_bessel.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_BESSEL_H__
+#define __GSL_SF_BESSEL_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_mode.h>
+#include <gsl/gsl_precision.h>
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Regular Bessel Function J_0(x)
+ *
+ * exceptions: none
+ */
+int gsl_sf_bessel_J0_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_J0(const double x);
+
+
+/* Regular Bessel Function J_1(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_J1_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_J1(const double x);
+
+
+/* Regular Bessel Function J_n(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result);
+double gsl_sf_bessel_Jn(const int n, const double x);
+
+
+/* Regular Bessel Function J_n(x), nmin <= n <= nmax
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double * result_array);
+
+
+/* Irregular Bessel function Y_0(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Y0_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Y0(const double x);
+
+
+/* Irregular Bessel function Y_1(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Y1_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Y1(const double x);
+
+
+/* Irregular Bessel function Y_n(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Yn_e(int n,const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Yn(const int n,const double x);
+
+
+/* Irregular Bessel function Y_n(x), nmin <= n <= nmax
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Yn_array(const int nmin, const int nmax, const double x, double * result_array);
+
+
+/* Regular modified Bessel function I_0(x)
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_bessel_I0_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_I0(const double x);
+
+
+/* Regular modified Bessel function I_1(x)
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_I1_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_I1(const double x);
+
+
+/* Regular modified Bessel function I_n(x)
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_In_e(const int n, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_In(const int n, const double x);
+
+
+/* Regular modified Bessel function I_n(x) for n=nmin,...,nmax
+ *
+ * nmin >=0, nmax >= nmin
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_In_array(const int nmin, const int nmax, const double x, double * result_array);
+
+
+/* Scaled regular modified Bessel function
+ * exp(-|x|) I_0(x)
+ *
+ * exceptions: none
+ */
+int gsl_sf_bessel_I0_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_I0_scaled(const double x);
+
+
+/* Scaled regular modified Bessel function
+ * exp(-|x|) I_1(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_I1_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_I1_scaled(const double x);
+
+
+/* Scaled regular modified Bessel function
+ * exp(-|x|) I_n(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_In_scaled_e(int n, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_In_scaled(const int n, const double x);
+
+
+/* Scaled regular modified Bessel function
+ * exp(-|x|) I_n(x) for n=nmin,...,nmax
+ *
+ * nmin >=0, nmax >= nmin
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_In_scaled_array(const int nmin, const int nmax, const double x, double * result_array);
+
+
+/* Irregular modified Bessel function K_0(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_K0_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_K0(const double x);
+
+
+/* Irregular modified Bessel function K_1(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_K1_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_K1(const double x);
+
+
+/* Irregular modified Bessel function K_n(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Kn_e(const int n, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Kn(const int n, const double x);
+
+
+/* Irregular modified Bessel function K_n(x) for n=nmin,...,nmax
+ *
+ * x > 0.0, nmin >=0, nmax >= nmin
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Kn_array(const int nmin, const int nmax, const double x, double * result_array);
+
+
+/* Scaled irregular modified Bessel function
+ * exp(x) K_0(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_bessel_K0_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_K0_scaled(const double x);
+
+
+/* Scaled irregular modified Bessel function
+ * exp(x) K_1(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_K1_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_K1_scaled(const double x);
+
+
+/* Scaled irregular modified Bessel function
+ * exp(x) K_n(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Kn_scaled_e(int n, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Kn_scaled(const int n, const double x);
+
+
+/* Scaled irregular modified Bessel function exp(x) K_n(x) for n=nmin,...,nmax
+ *
+ * x > 0.0, nmin >=0, nmax >= nmin
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Kn_scaled_array(const int nmin, const int nmax, const double x, double * result_array);
+
+
+/* Regular spherical Bessel function j_0(x) = sin(x)/x
+ *
+ * exceptions: none
+ */
+int gsl_sf_bessel_j0_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_j0(const double x);
+
+
+/* Regular spherical Bessel function j_1(x) = (sin(x)/x - cos(x))/x
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_j1_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_j1(const double x);
+
+
+/* Regular spherical Bessel function j_2(x) = ((3/x^2 - 1)sin(x) - 3cos(x)/x)/x
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_j2_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_j2(const double x);
+
+
+/* Regular spherical Bessel function j_l(x)
+ *
+ * l >= 0, x >= 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_jl_e(const int l, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_jl(const int l, const double x);
+
+
+/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_jl_array(const int lmax, const double x, double * result_array);
+
+
+/* Regular spherical Bessel function j_l(x) for l=0,1,...,lmax
+ * Uses Steed's method.
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_jl_steed_array(const int lmax, const double x, double * jl_x_array);
+
+
+/* Irregular spherical Bessel function y_0(x)
+ *
+ * exceptions: none
+ */
+int gsl_sf_bessel_y0_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_y0(const double x);
+
+
+/* Irregular spherical Bessel function y_1(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_y1_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_y1(const double x);
+
+
+/* Irregular spherical Bessel function y_2(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_y2_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_y2(const double x);
+
+
+/* Irregular spherical Bessel function y_l(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_yl_e(int l, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_yl(const int l, const double x);
+
+
+/* Irregular spherical Bessel function y_l(x) for l=0,1,...,lmax
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_yl_array(const int lmax, const double x, double * result_array);
+
+
+/* Regular scaled modified spherical Bessel function
+ *
+ * Exp[-|x|] i_0(x)
+ *
+ * exceptions: none
+ */
+int gsl_sf_bessel_i0_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_i0_scaled(const double x);
+
+
+/* Regular scaled modified spherical Bessel function
+ *
+ * Exp[-|x|] i_1(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_i1_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_i1_scaled(const double x);
+
+
+/* Regular scaled modified spherical Bessel function
+ *
+ * Exp[-|x|] i_2(x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_i2_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_i2_scaled(const double x);
+
+
+/* Regular scaled modified spherical Bessel functions
+ *
+ * Exp[-|x|] i_l(x)
+ *
+ * i_l(x) = Sqrt[Pi/(2x)] BesselI[l+1/2,x]
+ *
+ * l >= 0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_il_scaled_e(const int l, double x, gsl_sf_result * result);
+double gsl_sf_bessel_il_scaled(const int l, const double x);
+
+
+/* Regular scaled modified spherical Bessel functions
+ *
+ * Exp[-|x|] i_l(x)
+ * for l=0,1,...,lmax
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_il_scaled_array(const int lmax, const double x, double * result_array);
+
+
+/* Irregular scaled modified spherical Bessel function
+ * Exp[x] k_0(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_k0_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_k0_scaled(const double x);
+
+
+/* Irregular modified spherical Bessel function
+ * Exp[x] k_1(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_bessel_k1_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_k1_scaled(const double x);
+
+
+/* Irregular modified spherical Bessel function
+ * Exp[x] k_2(x)
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_bessel_k2_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_bessel_k2_scaled(const double x);
+
+
+/* Irregular modified spherical Bessel function
+ * Exp[x] k_l[x]
+ *
+ * k_l(x) = Sqrt[Pi/(2x)] BesselK[l+1/2,x]
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_kl_scaled_e(int l, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_kl_scaled(const int l, const double x);
+
+
+/* Irregular scaled modified spherical Bessel function
+ * Exp[x] k_l(x)
+ *
+ * for l=0,1,...,lmax
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_kl_scaled_array(const int lmax, const double x, double * result_array);
+
+
+/* Regular cylindrical Bessel function J_nu(x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Jnu_e(const double nu, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Jnu(const double nu, const double x);
+
+
+/* Irregular cylindrical Bessel function Y_nu(x)
+ *
+ * exceptions:
+ */
+int gsl_sf_bessel_Ynu_e(double nu, double x, gsl_sf_result * result);
+double gsl_sf_bessel_Ynu(const double nu, const double x);
+
+
+/* Regular cylindrical Bessel function J_nu(x)
+ * evaluated at a series of x values. The array
+ * contains the x values. They are assumed to be
+ * strictly ordered and positive. The array is
+ * over-written with the values of J_nu(x_i).
+ *
+ * exceptions: GSL_EDOM, GSL_EINVAL
+ */
+int gsl_sf_bessel_sequence_Jnu_e(double nu, gsl_mode_t mode, size_t size, double * v);
+
+
+/* Scaled modified cylindrical Bessel functions
+ *
+ * Exp[-|x|] BesselI[nu, x]
+ * x >= 0, nu >= 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_bessel_Inu_scaled_e(double nu, double x, gsl_sf_result * result);
+double gsl_sf_bessel_Inu_scaled(double nu, double x);
+
+
+/* Modified cylindrical Bessel functions
+ *
+ * BesselI[nu, x]
+ * x >= 0, nu >= 0
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_bessel_Inu_e(double nu, double x, gsl_sf_result * result);
+double gsl_sf_bessel_Inu(double nu, double x);
+
+
+/* Scaled modified cylindrical Bessel functions
+ *
+ * Exp[+|x|] BesselK[nu, x]
+ * x > 0, nu >= 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_bessel_Knu_scaled_e(const double nu, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Knu_scaled(const double nu, const double x);
+
+int gsl_sf_bessel_Knu_scaled_e10_e(const double nu, const double x, gsl_sf_result_e10 * result);
+
+/* Modified cylindrical Bessel functions
+ *
+ * BesselK[nu, x]
+ * x > 0, nu >= 0
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_bessel_Knu_e(const double nu, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_Knu(const double nu, const double x);
+
+
+/* Logarithm of modified cylindrical Bessel functions.
+ *
+ * Log[BesselK[nu, x]]
+ * x > 0, nu >= 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_bessel_lnKnu_e(const double nu, const double x, gsl_sf_result * result);
+double gsl_sf_bessel_lnKnu(const double nu, const double x);
+
+
+/* s'th positive zero of the Bessel function J_0(x).
+ *
+ * exceptions:
+ */
+int gsl_sf_bessel_zero_J0_e(unsigned int s, gsl_sf_result * result);
+double gsl_sf_bessel_zero_J0(unsigned int s);
+
+
+/* s'th positive zero of the Bessel function J_1(x).
+ *
+ * exceptions:
+ */
+int gsl_sf_bessel_zero_J1_e(unsigned int s, gsl_sf_result * result);
+double gsl_sf_bessel_zero_J1(unsigned int s);
+
+
+/* s'th positive zero of the Bessel function J_nu(x).
+ *
+ * exceptions:
+ */
+int gsl_sf_bessel_zero_Jnu_e(double nu, unsigned int s, gsl_sf_result * result);
+double gsl_sf_bessel_zero_Jnu(double nu, unsigned int s);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_BESSEL_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_clausen.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_clausen.h
new file mode 100644
index 00000000..8e4ccd24
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_clausen.h
@@ -0,0 +1,52 @@
+/* specfunc/gsl_sf_clausen.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_CLAUSEN_H__
+#define __GSL_SF_CLAUSEN_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Calculate the Clausen integral:
+ * Cl_2(x) := Integrate[-Log[2 Sin[t/2]], {t,0,x}]
+ *
+ * Relation to dilogarithm:
+ * Cl_2(theta) = Im[ Li_2(e^(i theta)) ]
+ */
+int gsl_sf_clausen_e(double x, gsl_sf_result * result);
+double gsl_sf_clausen(const double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_CLAUSEN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coulomb.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coulomb.h
new file mode 100644
index 00000000..764a5714
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coulomb.h
@@ -0,0 +1,128 @@
+/* specfunc/gsl_sf_coulomb.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_COULOMB_H__
+#define __GSL_SF_COULOMB_H__
+
+#include <gsl/gsl_mode.h>
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Normalized hydrogenic bound states, radial dependence. */
+
+/* R_1 := 2Z sqrt(Z) exp(-Z r)
+ */
+int gsl_sf_hydrogenicR_1_e(const double Z, const double r, gsl_sf_result * result);
+double gsl_sf_hydrogenicR_1(const double Z, const double r);
+
+/* R_n := norm exp(-Z r/n) (2Z/n)^l Laguerre[n-l-1, 2l+1, 2Z/n r]
+ *
+ * normalization such that psi(n,l,r) = R_n Y_{lm}
+ */
+int gsl_sf_hydrogenicR_e(const int n, const int l, const double Z, const double r, gsl_sf_result * result);
+double gsl_sf_hydrogenicR(const int n, const int l, const double Z, const double r);
+
+
+/* Coulomb wave functions F_{lam_F}(eta,x), G_{lam_G}(eta,x)
+ * and their derivatives; lam_G := lam_F - k_lam_G
+ *
+ * lam_F, lam_G > -0.5
+ * x > 0.0
+ *
+ * Conventions of Abramowitz+Stegun.
+ *
+ * Because there can be a large dynamic range of values,
+ * overflows are handled gracefully. If an overflow occurs,
+ * GSL_EOVRFLW is signalled and exponent(s) are returned
+ * through exp_F, exp_G. These are such that
+ *
+ * F_L(eta,x) = fc[k_L] * exp(exp_F)
+ * G_L(eta,x) = gc[k_L] * exp(exp_G)
+ * F_L'(eta,x) = fcp[k_L] * exp(exp_F)
+ * G_L'(eta,x) = gcp[k_L] * exp(exp_G)
+ */
+int
+gsl_sf_coulomb_wave_FG_e(const double eta, const double x,
+ const double lam_F,
+ const int k_lam_G,
+ gsl_sf_result * F, gsl_sf_result * Fp,
+ gsl_sf_result * G, gsl_sf_result * Gp,
+ double * exp_F, double * exp_G);
+
+
+/* F_L(eta,x) as array */
+int gsl_sf_coulomb_wave_F_array(
+ double lam_min, int kmax,
+ double eta, double x,
+ double * fc_array,
+ double * F_exponent
+ );
+
+/* F_L(eta,x), G_L(eta,x) as arrays */
+int gsl_sf_coulomb_wave_FG_array(double lam_min, int kmax,
+ double eta, double x,
+ double * fc_array, double * gc_array,
+ double * F_exponent,
+ double * G_exponent
+ );
+
+/* F_L(eta,x), G_L(eta,x), F'_L(eta,x), G'_L(eta,x) as arrays */
+int gsl_sf_coulomb_wave_FGp_array(double lam_min, int kmax,
+ double eta, double x,
+ double * fc_array, double * fcp_array,
+ double * gc_array, double * gcp_array,
+ double * F_exponent,
+ double * G_exponent
+ );
+
+/* Coulomb wave function divided by the argument,
+ * F(eta, x)/x. This is the function which reduces to
+ * spherical Bessel functions in the limit eta->0.
+ */
+int gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax,
+ double eta, double x,
+ double * fc_array,
+ double * F_exponent
+ );
+
+
+/* Coulomb wave function normalization constant.
+ * [Abramowitz+Stegun 14.1.8, 14.1.9]
+ */
+int gsl_sf_coulomb_CL_e(double L, double eta, gsl_sf_result * result);
+int gsl_sf_coulomb_CL_array(double Lmin, int kmax, double eta, double * cl);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_COULOMB_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coupling.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coupling.h
new file mode 100644
index 00000000..c46b9f58
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_coupling.h
@@ -0,0 +1,125 @@
+/* specfunc/gsl_sf_coupling.h
+ *
+ * Copyright (C) 1996,1997,1998,1999,2000,2001,2002 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_COUPLING_H__
+#define __GSL_SF_COUPLING_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* 3j Symbols: / ja jb jc \
+ * \ ma mb mc /
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_coupling_3j_e(int two_ja, int two_jb, int two_jc,
+ int two_ma, int two_mb, int two_mc,
+ gsl_sf_result * result
+ );
+double gsl_sf_coupling_3j(int two_ja, int two_jb, int two_jc,
+ int two_ma, int two_mb, int two_mc
+ );
+
+
+/* 6j Symbols: / ja jb jc \
+ * \ jd je jf /
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_coupling_6j_e(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf,
+ gsl_sf_result * result
+ );
+double gsl_sf_coupling_6j(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf
+ );
+
+/* Racah W coefficients:
+ *
+ * W(a b c d; e f) = (-1)^{a+b+c+d} / a b e \
+ * \ d c f /
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_coupling_RacahW_e(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf,
+ gsl_sf_result * result
+ );
+double gsl_sf_coupling_RacahW(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf
+ );
+
+
+/* 9j Symbols: / ja jb jc \
+ * | jd je jf |
+ * \ jg jh ji /
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_coupling_9j_e(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf,
+ int two_jg, int two_jh, int two_ji,
+ gsl_sf_result * result
+ );
+double gsl_sf_coupling_9j(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf,
+ int two_jg, int two_jh, int two_ji
+ );
+
+
+/* INCORRECT version of 6j Symbols:
+ * This function actually calculates
+ * / ja jb je \
+ * \ jd jc jf /
+ * It represents the original implementation,
+ * which had the above permutation of the
+ * arguments. This was wrong and confusing,
+ * and I had to fix it. Sorry for the trouble.
+ * [GJ] Tue Nov 26 12:53:39 MST 2002
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+#ifndef GSL_DISABLE_DEPRECATED
+int gsl_sf_coupling_6j_INCORRECT_e(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf,
+ gsl_sf_result * result
+ );
+double gsl_sf_coupling_6j_INCORRECT(int two_ja, int two_jb, int two_jc,
+ int two_jd, int two_je, int two_jf
+ );
+#endif /* !GSL_DISABLE_DEPRECATED */
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_COUPLING_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dawson.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dawson.h
new file mode 100644
index 00000000..7c11f9f4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dawson.h
@@ -0,0 +1,52 @@
+/* specfunc/gsl_sf_dawson.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_DAWSON_H__
+#define __GSL_SF_DAWSON_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Dawson's integral:
+ *
+ * Exp[-x^2] Integral[ Exp[t^2], {t,0,x}]
+ *
+ * exceptions: GSL_EUNDRFLW;
+ */
+int gsl_sf_dawson_e(double x, gsl_sf_result * result);
+double gsl_sf_dawson(double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_DAWSON_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_debye.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_debye.h
new file mode 100644
index 00000000..bc732b17
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_debye.h
@@ -0,0 +1,91 @@
+/* specfunc/gsl_sf_debye.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+/* augmented by D_5(x) and D_6(x) by Richard J. Mathar, 2005-11-08 */
+
+#ifndef __GSL_SF_DEBYE_H__
+#define __GSL_SF_DEBYE_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* D_n(x) := n/x^n Integrate[t^n/(e^t - 1), {t,0,x}] */
+
+/* D_1(x)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_debye_1_e(const double x, gsl_sf_result * result);
+double gsl_sf_debye_1(const double x);
+
+
+/* D_2(x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_debye_2_e(const double x, gsl_sf_result * result);
+double gsl_sf_debye_2(const double x);
+
+
+/* D_3(x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_debye_3_e(const double x, gsl_sf_result * result);
+double gsl_sf_debye_3(const double x);
+
+
+/* D_4(x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_debye_4_e(const double x, gsl_sf_result * result);
+double gsl_sf_debye_4(const double x);
+
+/* D_5(x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_debye_5_e(const double x, gsl_sf_result * result);
+double gsl_sf_debye_5(const double x);
+
+/* D_6(x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_debye_6_e(const double x, gsl_sf_result * result);
+double gsl_sf_debye_6(const double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_DEBYE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dilog.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dilog.h
new file mode 100644
index 00000000..79b2b76f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_dilog.h
@@ -0,0 +1,130 @@
+/* specfunc/gsl_sf_dilog.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_DILOG_H__
+#define __GSL_SF_DILOG_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Real part of DiLogarithm(x), for real argument.
+ * In Lewin's notation, this is Li_2(x).
+ *
+ * Li_2(x) = - Re[ Integrate[ Log[1-s] / s, {s, 0, x}] ]
+ *
+ * The function in the complex plane has a branch point
+ * at z = 1; we place the cut in the conventional way,
+ * on [1, +infty). This means that the value for real x > 1
+ * is a matter of definition; however, this choice does not
+ * affect the real part and so is not relevant to the
+ * interpretation of this implemented function.
+ */
+int gsl_sf_dilog_e(const double x, gsl_sf_result * result);
+double gsl_sf_dilog(const double x);
+
+
+/* DiLogarithm(z), for complex argument z = x + i y.
+ * Computes the principal branch.
+ *
+ * Recall that the branch cut is on the real axis with x > 1.
+ * The imaginary part of the computed value on the cut is given
+ * by -Pi*log(x), which is the limiting value taken approaching
+ * from y < 0. This is a conventional choice, though there is no
+ * true standardized choice.
+ *
+ * Note that there is no canonical way to lift the defining
+ * contour to the full Riemann surface because of the appearance
+ * of a "hidden branch point" at z = 0 on non-principal sheets.
+ * Experts will know the simple algebraic prescription for
+ * obtaining the sheet they want; non-experts will not want
+ * to know anything about it. This is why GSL chooses to compute
+ * only on the principal branch.
+ */
+int
+gsl_sf_complex_dilog_xy_e(
+ const double x,
+ const double y,
+ gsl_sf_result * result_re,
+ gsl_sf_result * result_im
+ );
+
+
+
+/* DiLogarithm(z), for complex argument z = r Exp[i theta].
+ * Computes the principal branch, thereby assuming an
+ * implicit reduction of theta to the range (-2 pi, 2 pi).
+ *
+ * If theta is identically zero, the imaginary part is computed
+ * as if approaching from y > 0. For other values of theta no
+ * special consideration is given, since it is assumed that
+ * no other machine representations of multiples of pi will
+ * produce y = 0 precisely. This assumption depends on some
+ * subtle properties of the machine arithmetic, such as
+ * correct rounding and monotonicity of the underlying
+ * implementation of sin() and cos().
+ *
+ * This function is ok, but the interface is confusing since
+ * it makes it appear that the branch structure is resolved.
+ * Furthermore the handling of values close to the branch
+ * cut is subtle. Perhap this interface should be deprecated.
+ */
+int
+gsl_sf_complex_dilog_e(
+ const double r,
+ const double theta,
+ gsl_sf_result * result_re,
+ gsl_sf_result * result_im
+ );
+
+
+
+/* Spence integral; spence(s) := Li_2(1-s)
+ *
+ * This function has a branch point at 0; we place the
+ * cut on (-infty,0). Because of our choice for the value
+ * of Li_2(z) on the cut, spence(s) is continuous as
+ * s approaches the cut from above. In other words,
+ * we define spence(x) = spence(x + i 0+).
+ */
+int
+gsl_sf_complex_spence_xy_e(
+ const double x,
+ const double y,
+ gsl_sf_result * real_sp,
+ gsl_sf_result * imag_sp
+ );
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_DILOG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elementary.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elementary.h
new file mode 100644
index 00000000..467bfdaa
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elementary.h
@@ -0,0 +1,57 @@
+/* specfunc/gsl_sf_elementary.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+/* Miscellaneous elementary functions and operations.
+ */
+#ifndef __GSL_SF_ELEMENTARY_H__
+#define __GSL_SF_ELEMENTARY_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Multiplication.
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_multiply_e(const double x, const double y, gsl_sf_result * result);
+double gsl_sf_multiply(const double x, const double y);
+
+
+/* Multiplication of quantities with associated errors.
+ */
+int gsl_sf_multiply_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_ELEMENTARY_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_ellint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_ellint.h
new file mode 100644
index 00000000..7f68f0e2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_ellint.h
@@ -0,0 +1,112 @@
+/* specfunc/gsl_sf_ellint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_ELLINT_H__
+#define __GSL_SF_ELLINT_H__
+
+#include <gsl/gsl_mode.h>
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Legendre form of complete elliptic integrals
+ *
+ * K(k) = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}]
+ * E(k) = Integral[ Sqrt[1 - k^2 Sin[t]^2], {t, 0, Pi/2}]
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_ellint_Kcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_Kcomp(double k, gsl_mode_t mode);
+
+int gsl_sf_ellint_Ecomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_Ecomp(double k, gsl_mode_t mode);
+
+int gsl_sf_ellint_Pcomp_e(double k, double n, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_Pcomp(double k, double n, gsl_mode_t mode);
+
+int gsl_sf_ellint_Dcomp_e(double k, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_Dcomp(double k, gsl_mode_t mode);
+
+
+/* Legendre form of incomplete elliptic integrals
+ *
+ * F(phi,k) = Integral[1/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
+ * E(phi,k) = Integral[ Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
+ * P(phi,k,n) = Integral[(1 + n Sin[t]^2)^(-1)/Sqrt[1 - k^2 Sin[t]^2], {t, 0, phi}]
+ * D(phi,k,n) = R_D(1-Sin[phi]^2, 1-k^2 Sin[phi]^2, 1.0)
+ *
+ * F: [Carlson, Numerische Mathematik 33 (1979) 1, (4.1)]
+ * E: [Carlson, ", (4.2)]
+ * P: [Carlson, ", (4.3)]
+ * D: [Carlson, ", (4.4)]
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_ellint_F_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_F(double phi, double k, gsl_mode_t mode);
+
+int gsl_sf_ellint_E_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_E(double phi, double k, gsl_mode_t mode);
+
+int gsl_sf_ellint_P_e(double phi, double k, double n, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_P(double phi, double k, double n, gsl_mode_t mode);
+
+int gsl_sf_ellint_D_e(double phi, double k, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_D(double phi, double k, gsl_mode_t mode);
+
+
+/* Carlson's symmetric basis of functions
+ *
+ * RC(x,y) = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1)], {t,0,Inf}]
+ * RD(x,y,z) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2), {t,0,Inf}]
+ * RF(x,y,z) = 1/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2), {t,0,Inf}]
+ * RJ(x,y,z,p) = 3/2 Integral[(t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1), {t,0,Inf}]
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_ellint_RC_e(double x, double y, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_RC(double x, double y, gsl_mode_t mode);
+
+int gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_RD(double x, double y, double z, gsl_mode_t mode);
+
+int gsl_sf_ellint_RF_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_RF(double x, double y, double z, gsl_mode_t mode);
+
+int gsl_sf_ellint_RJ_e(double x, double y, double z, double p, gsl_mode_t mode, gsl_sf_result * result);
+double gsl_sf_ellint_RJ(double x, double y, double z, double p, gsl_mode_t mode);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_ELLINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elljac.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elljac.h
new file mode 100644
index 00000000..7f804a5c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_elljac.h
@@ -0,0 +1,48 @@
+/* specfunc/gsl_sf_elljac.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_ELLJAC_H__
+#define __GSL_SF_ELLJAC_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Jacobian elliptic functions sn, dn, cn,
+ * by descending Landen transformations
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_elljac_e(double u, double m, double * sn, double * cn, double * dn);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_ELLJAC_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_erf.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_erf.h
new file mode 100644
index 00000000..a196d0df
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_erf.h
@@ -0,0 +1,91 @@
+/* specfunc/gsl_sf_erf.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_ERF_H__
+#define __GSL_SF_ERF_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Complementary Error Function
+ * erfc(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,x,Infinity}]
+ *
+ * exceptions: none
+ */
+int gsl_sf_erfc_e(double x, gsl_sf_result * result);
+double gsl_sf_erfc(double x);
+
+
+/* Log Complementary Error Function
+ *
+ * exceptions: none
+ */
+int gsl_sf_log_erfc_e(double x, gsl_sf_result * result);
+double gsl_sf_log_erfc(double x);
+
+
+/* Error Function
+ * erf(x) := 2/Sqrt[Pi] Integrate[Exp[-t^2], {t,0,x}]
+ *
+ * exceptions: none
+ */
+int gsl_sf_erf_e(double x, gsl_sf_result * result);
+double gsl_sf_erf(double x);
+
+
+/* Probability functions:
+ * Z(x) : Abramowitz+Stegun 26.2.1
+ * Q(x) : Abramowitz+Stegun 26.2.3
+ *
+ * exceptions: none
+ */
+int gsl_sf_erf_Z_e(double x, gsl_sf_result * result);
+int gsl_sf_erf_Q_e(double x, gsl_sf_result * result);
+double gsl_sf_erf_Z(double x);
+double gsl_sf_erf_Q(double x);
+
+
+/* Hazard function, also known as the inverse Mill's ratio.
+ *
+ * H(x) := Z(x)/Q(x)
+ * = Sqrt[2/Pi] Exp[-x^2 / 2] / Erfc[x/Sqrt[2]]
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_hazard_e(double x, gsl_sf_result * result);
+double gsl_sf_hazard(double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_ERF_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_exp.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_exp.h
new file mode 100644
index 00000000..8f8aff76
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_exp.h
@@ -0,0 +1,134 @@
+/* specfunc/gsl_sf_exp.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_EXP_H__
+#define __GSL_SF_EXP_H__
+
+#include <gsl/gsl_sf_result.h>
+#include <gsl/gsl_precision.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Provide an exp() function with GSL semantics,
+ * i.e. with proper error checking, etc.
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_exp_e(const double x, gsl_sf_result * result);
+double gsl_sf_exp(const double x);
+
+
+/* Exp(x)
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_exp_e10_e(const double x, gsl_sf_result_e10 * result);
+
+
+/* Exponentiate and multiply by a given factor: y * Exp(x)
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_exp_mult_e(const double x, const double y, gsl_sf_result * result);
+double gsl_sf_exp_mult(const double x, const double y);
+
+
+/* Exponentiate and multiply by a given factor: y * Exp(x)
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_exp_mult_e10_e(const double x, const double y, gsl_sf_result_e10 * result);
+
+
+/* exp(x)-1
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_expm1_e(const double x, gsl_sf_result * result);
+double gsl_sf_expm1(const double x);
+
+
+/* (exp(x)-1)/x = 1 + x/2 + x^2/(2*3) + x^3/(2*3*4) + ...
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_exprel_e(const double x, gsl_sf_result * result);
+double gsl_sf_exprel(const double x);
+
+
+/* 2(exp(x)-1-x)/x^2 = 1 + x/3 + x^2/(3*4) + x^3/(3*4*5) + ...
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_exprel_2_e(double x, gsl_sf_result * result);
+double gsl_sf_exprel_2(const double x);
+
+
+/* Similarly for the N-th generalization of
+ * the above. The so-called N-relative exponential
+ *
+ * exprel_N(x) = N!/x^N (exp(x) - Sum[x^k/k!, {k,0,N-1}])
+ * = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ...
+ * = 1F1(1,1+N,x)
+ */
+int gsl_sf_exprel_n_e(const int n, const double x, gsl_sf_result * result);
+double gsl_sf_exprel_n(const int n, const double x);
+
+int gsl_sf_exprel_n_CF_e(const double n, const double x, gsl_sf_result * result);
+
+
+/* Exponentiate a quantity with an associated error.
+ */
+int gsl_sf_exp_err_e(const double x, const double dx, gsl_sf_result * result);
+
+/* Exponentiate a quantity with an associated error.
+ */
+int gsl_sf_exp_err_e10_e(const double x, const double dx, gsl_sf_result_e10 * result);
+
+
+/* Exponentiate and multiply by a given factor: y * Exp(x),
+ * for quantities with associated errors.
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_exp_mult_err_e(const double x, const double dx, const double y, const double dy, gsl_sf_result * result);
+
+
+/* Exponentiate and multiply by a given factor: y * Exp(x),
+ * for quantities with associated errors.
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_exp_mult_err_e10_e(const double x, const double dx, const double y, const double dy, gsl_sf_result_e10 * result);
+
+__END_DECLS
+
+#endif /* __GSL_SF_EXP_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_expint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_expint.h
new file mode 100644
index 00000000..4005f72a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_expint.h
@@ -0,0 +1,167 @@
+/* specfunc/gsl_sf_expint.h
+ *
+ * Copyright (C) 2007 Brian Gough
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_EXPINT_H__
+#define __GSL_SF_EXPINT_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* E_1(x) := Re[ Integrate[ Exp[-xt]/t, {t,1,Infinity}] ]
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_E1_e(const double x, gsl_sf_result * result);
+double gsl_sf_expint_E1(const double x);
+
+
+/* E_2(x) := Re[ Integrate[ Exp[-xt]/t^2, {t,1,Infinity}] ]
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_E2_e(const double x, gsl_sf_result * result);
+double gsl_sf_expint_E2(const double x);
+
+
+/* E_n(x) := Re[ Integrate[ Exp[-xt]/t^n, {t,1,Infinity}] ]
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_En_e(const int n, const double x, gsl_sf_result * result);
+double gsl_sf_expint_En(const int n, const double x);
+
+
+/* E_1_scaled(x) := exp(x) E_1(x)
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_E1_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_expint_E1_scaled(const double x);
+
+
+/* E_2_scaled(x) := exp(x) E_2(x)
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_E2_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_expint_E2_scaled(const double x);
+
+/* E_n_scaled(x) := exp(x) E_n(x)
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_En_scaled_e(const int n, const double x, gsl_sf_result * result);
+double gsl_sf_expint_En_scaled(const int n, const double x);
+
+
+/* Ei(x) := - PV Integrate[ Exp[-t]/t, {t,-x,Infinity}]
+ * := PV Integrate[ Exp[t]/t, {t,-Infinity,x}]
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_Ei_e(const double x, gsl_sf_result * result);
+double gsl_sf_expint_Ei(const double x);
+
+
+/* Ei_scaled(x) := exp(-x) Ei(x)
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_expint_Ei_scaled_e(const double x, gsl_sf_result * result);
+double gsl_sf_expint_Ei_scaled(const double x);
+
+
+/* Shi(x) := Integrate[ Sinh[t]/t, {t,0,x}]
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_Shi_e(const double x, gsl_sf_result * result);
+double gsl_sf_Shi(const double x);
+
+
+/* Chi(x) := Re[ M_EULER + log(x) + Integrate[(Cosh[t]-1)/t, {t,0,x}] ]
+ *
+ * x != 0.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_Chi_e(const double x, gsl_sf_result * result);
+double gsl_sf_Chi(const double x);
+
+
+/* Ei_3(x) := Integral[ Exp[-t^3], {t,0,x}]
+ *
+ * x >= 0.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_expint_3_e(const double x, gsl_sf_result * result);
+double gsl_sf_expint_3(double x);
+
+
+/* Si(x) := Integrate[ Sin[t]/t, {t,0,x}]
+ *
+ * exceptions: none
+ */
+int gsl_sf_Si_e(const double x, gsl_sf_result * result);
+double gsl_sf_Si(const double x);
+
+
+/* Ci(x) := -Integrate[ Cos[t]/t, {t,x,Infinity}]
+ *
+ * x > 0.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_Ci_e(const double x, gsl_sf_result * result);
+double gsl_sf_Ci(const double x);
+
+
+/* AtanInt(x) := Integral[ Arctan[t]/t, {t,0,x}]
+ *
+ *
+ * exceptions:
+ */
+int gsl_sf_atanint_e(const double x, gsl_sf_result * result);
+double gsl_sf_atanint(const double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_EXPINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_fermi_dirac.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_fermi_dirac.h
new file mode 100644
index 00000000..8f708cd2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_fermi_dirac.h
@@ -0,0 +1,126 @@
+/* specfunc/gsl_sf_fermi_dirac.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_FERMI_DIRAC_H__
+#define __GSL_SF_FERMI_DIRAC_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Complete Fermi-Dirac Integrals:
+ *
+ * F_j(x) := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,0,Infinity}]
+ *
+ *
+ * Incomplete Fermi-Dirac Integrals:
+ *
+ * F_j(x,b) := 1/Gamma[j+1] Integral[ t^j /(Exp[t-x] + 1), {t,b,Infinity}]
+ */
+
+
+/* Complete integral F_{-1}(x) = e^x / (1 + e^x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_fermi_dirac_m1_e(const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_m1(const double x);
+
+
+/* Complete integral F_0(x) = ln(1 + e^x)
+ *
+ * exceptions: GSL_EUNDRFLW
+ */
+int gsl_sf_fermi_dirac_0_e(const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_0(const double x);
+
+
+/* Complete integral F_1(x)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_fermi_dirac_1_e(const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_1(const double x);
+
+
+/* Complete integral F_2(x)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_fermi_dirac_2_e(const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_2(const double x);
+
+
+/* Complete integral F_j(x)
+ * for integer j
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_fermi_dirac_int_e(const int j, const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_int(const int j, const double x);
+
+
+/* Complete integral F_{-1/2}(x)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_fermi_dirac_mhalf_e(const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_mhalf(const double x);
+
+
+/* Complete integral F_{1/2}(x)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_fermi_dirac_half_e(const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_half(const double x);
+
+
+/* Complete integral F_{3/2}(x)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_fermi_dirac_3half_e(const double x, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_3half(const double x);
+
+
+/* Incomplete integral F_0(x,b) = ln(1 + e^(b-x)) - (b-x)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EDOM
+ */
+int gsl_sf_fermi_dirac_inc_0_e(const double x, const double b, gsl_sf_result * result);
+double gsl_sf_fermi_dirac_inc_0(const double x, const double b);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_FERMI_DIRAC_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gamma.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gamma.h
new file mode 100644
index 00000000..d5e867ba
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gamma.h
@@ -0,0 +1,293 @@
+/* specfunc/gsl_sf_gamma.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_GAMMA_H__
+#define __GSL_SF_GAMMA_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Log[Gamma(x)], x not a negative integer
+ * Uses real Lanczos method.
+ * Returns the real part of Log[Gamma[x]] when x < 0,
+ * i.e. Log[|Gamma[x]|].
+ *
+ * exceptions: GSL_EDOM, GSL_EROUND
+ */
+int gsl_sf_lngamma_e(double x, gsl_sf_result * result);
+double gsl_sf_lngamma(const double x);
+
+
+/* Log[Gamma(x)], x not a negative integer
+ * Uses real Lanczos method. Determines
+ * the sign of Gamma[x] as well as Log[|Gamma[x]|] for x < 0.
+ * So Gamma[x] = sgn * Exp[result_lg].
+ *
+ * exceptions: GSL_EDOM, GSL_EROUND
+ */
+int gsl_sf_lngamma_sgn_e(double x, gsl_sf_result * result_lg, double *sgn);
+
+
+/* Gamma(x), x not a negative integer
+ * Uses real Lanczos method.
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EROUND
+ */
+int gsl_sf_gamma_e(const double x, gsl_sf_result * result);
+double gsl_sf_gamma(const double x);
+
+
+/* Regulated Gamma Function, x > 0
+ * Gamma^*(x) = Gamma(x)/(Sqrt[2Pi] x^(x-1/2) exp(-x))
+ * = (1 + 1/(12x) + ...), x->Inf
+ * A useful suggestion of Temme.
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_gammastar_e(const double x, gsl_sf_result * result);
+double gsl_sf_gammastar(const double x);
+
+
+/* 1/Gamma(x)
+ * Uses real Lanczos method.
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EROUND
+ */
+int gsl_sf_gammainv_e(const double x, gsl_sf_result * result);
+double gsl_sf_gammainv(const double x);
+
+
+/* Log[Gamma(z)] for z complex, z not a negative integer
+ * Uses complex Lanczos method. Note that the phase part (arg)
+ * is not well-determined when |z| is very large, due
+ * to inevitable roundoff in restricting to (-Pi,Pi].
+ * This will raise the GSL_ELOSS exception when it occurs.
+ * The absolute value part (lnr), however, never suffers.
+ *
+ * Calculates:
+ * lnr = log|Gamma(z)|
+ * arg = arg(Gamma(z)) in (-Pi, Pi]
+ *
+ * exceptions: GSL_EDOM, GSL_ELOSS
+ */
+int gsl_sf_lngamma_complex_e(double zr, double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
+
+
+/* x^n / n!
+ *
+ * x >= 0.0, n >= 0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_taylorcoeff_e(const int n, const double x, gsl_sf_result * result);
+double gsl_sf_taylorcoeff(const int n, const double x);
+
+
+/* n!
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_fact_e(const unsigned int n, gsl_sf_result * result);
+double gsl_sf_fact(const unsigned int n);
+
+
+/* n!! = n(n-2)(n-4) ...
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_doublefact_e(const unsigned int n, gsl_sf_result * result);
+double gsl_sf_doublefact(const unsigned int n);
+
+
+/* log(n!)
+ * Faster than ln(Gamma(n+1)) for n < 170; defers for larger n.
+ *
+ * exceptions: none
+ */
+int gsl_sf_lnfact_e(const unsigned int n, gsl_sf_result * result);
+double gsl_sf_lnfact(const unsigned int n);
+
+
+/* log(n!!)
+ *
+ * exceptions: none
+ */
+int gsl_sf_lndoublefact_e(const unsigned int n, gsl_sf_result * result);
+double gsl_sf_lndoublefact(const unsigned int n);
+
+
+/* log(n choose m)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_lnchoose_e(unsigned int n, unsigned int m, gsl_sf_result * result);
+double gsl_sf_lnchoose(unsigned int n, unsigned int m);
+
+
+/* n choose m
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_choose_e(unsigned int n, unsigned int m, gsl_sf_result * result);
+double gsl_sf_choose(unsigned int n, unsigned int m);
+
+
+/* Logarithm of Pochhammer (Apell) symbol
+ * log( (a)_x )
+ * where (a)_x := Gamma[a + x]/Gamma[a]
+ *
+ * a > 0, a+x > 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_lnpoch_e(const double a, const double x, gsl_sf_result * result);
+double gsl_sf_lnpoch(const double a, const double x);
+
+
+/* Logarithm of Pochhammer (Apell) symbol, with sign information.
+ * result = log( |(a)_x| )
+ * sgn = sgn( (a)_x )
+ * where (a)_x := Gamma[a + x]/Gamma[a]
+ *
+ * a != neg integer, a+x != neg integer
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_lnpoch_sgn_e(const double a, const double x, gsl_sf_result * result, double * sgn);
+
+
+/* Pochhammer (Apell) symbol
+ * (a)_x := Gamma[a + x]/Gamma[x]
+ *
+ * a != neg integer, a+x != neg integer
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_poch_e(const double a, const double x, gsl_sf_result * result);
+double gsl_sf_poch(const double a, const double x);
+
+
+/* Relative Pochhammer (Apell) symbol
+ * ((a,x) - 1)/x
+ * where (a,x) = (a)_x := Gamma[a + x]/Gamma[a]
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_pochrel_e(const double a, const double x, gsl_sf_result * result);
+double gsl_sf_pochrel(const double a, const double x);
+
+
+/* Normalized Incomplete Gamma Function
+ *
+ * Q(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,x,Infinity} ]
+ *
+ * a >= 0, x >= 0
+ * Q(a,0) := 1
+ * Q(0,x) := 0, x != 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_gamma_inc_Q_e(const double a, const double x, gsl_sf_result * result);
+double gsl_sf_gamma_inc_Q(const double a, const double x);
+
+
+/* Complementary Normalized Incomplete Gamma Function
+ *
+ * P(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,0,x} ]
+ *
+ * a > 0, x >= 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_gamma_inc_P_e(const double a, const double x, gsl_sf_result * result);
+double gsl_sf_gamma_inc_P(const double a, const double x);
+
+
+/* Non-normalized Incomplete Gamma Function
+ *
+ * Gamma(a,x) := Integral[ t^(a-1) e^(-t), {t,x,Infinity} ]
+ *
+ * x >= 0.0
+ * Gamma(a, 0) := Gamma(a)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_gamma_inc_e(const double a, const double x, gsl_sf_result * result);
+double gsl_sf_gamma_inc(const double a, const double x);
+
+
+/* Logarithm of Beta Function
+ * Log[B(a,b)]
+ *
+ * a > 0, b > 0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_lnbeta_e(const double a, const double b, gsl_sf_result * result);
+double gsl_sf_lnbeta(const double a, const double b);
+
+int gsl_sf_lnbeta_sgn_e(const double x, const double y, gsl_sf_result * result, double * sgn);
+
+
+/* Beta Function
+ * B(a,b)
+ *
+ * a > 0, b > 0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_beta_e(const double a, const double b, gsl_sf_result * result);
+double gsl_sf_beta(const double a, const double b);
+
+
+/* Normalized Incomplete Beta Function
+ * B_x(a,b)/B(a,b)
+ *
+ * a > 0, b > 0, 0 <= x <= 1
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_beta_inc_e(const double a, const double b, const double x, gsl_sf_result * result);
+double gsl_sf_beta_inc(const double a, const double b, const double x);
+
+
+/* The maximum x such that gamma(x) is not
+ * considered an overflow.
+ */
+#define GSL_SF_GAMMA_XMAX 171.0
+
+/* The maximum n such that gsl_sf_fact(n) does not give an overflow. */
+#define GSL_SF_FACT_NMAX 170
+
+/* The maximum n such that gsl_sf_doublefact(n) does not give an overflow. */
+#define GSL_SF_DOUBLEFACT_NMAX 297
+
+__END_DECLS
+
+#endif /* __GSL_SF_GAMMA_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gegenbauer.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gegenbauer.h
new file mode 100644
index 00000000..bf41d218
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_gegenbauer.h
@@ -0,0 +1,73 @@
+/* specfunc/gsl_sf_gegenbauer.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_GEGENBAUER_H__
+#define __GSL_SF_GEGENBAUER_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Evaluate Gegenbauer polynomials
+ * using explicit representations.
+ *
+ * exceptions: none
+ */
+int gsl_sf_gegenpoly_1_e(double lambda, double x, gsl_sf_result * result);
+int gsl_sf_gegenpoly_2_e(double lambda, double x, gsl_sf_result * result);
+int gsl_sf_gegenpoly_3_e(double lambda, double x, gsl_sf_result * result);
+double gsl_sf_gegenpoly_1(double lambda, double x);
+double gsl_sf_gegenpoly_2(double lambda, double x);
+double gsl_sf_gegenpoly_3(double lambda, double x);
+
+
+/* Evaluate Gegenbauer polynomials.
+ *
+ * lambda > -1/2, n >= 0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_gegenpoly_n_e(int n, double lambda, double x, gsl_sf_result * result);
+double gsl_sf_gegenpoly_n(int n, double lambda, double x);
+
+
+/* Calculate array of Gegenbauer polynomials
+ * for n = (0, 1, 2, ... nmax)
+ *
+ * lambda > -1/2, nmax >= 0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_gegenpoly_array(int nmax, double lambda, double x, double * result_array);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_GEGENBAUER_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_hyperg.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_hyperg.h
new file mode 100644
index 00000000..8366b88d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_hyperg.h
@@ -0,0 +1,154 @@
+/* specfunc/gsl_sf_hyperg.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_HYPERG_H__
+#define __GSL_SF_HYPERG_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Hypergeometric function related to Bessel functions
+ * 0F1[c,x] =
+ * Gamma[c] x^(1/2(1-c)) I_{c-1}(2 Sqrt[x])
+ * Gamma[c] (-x)^(1/2(1-c)) J_{c-1}(2 Sqrt[-x])
+ *
+ * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
+ */
+int gsl_sf_hyperg_0F1_e(double c, double x, gsl_sf_result * result);
+double gsl_sf_hyperg_0F1(const double c, const double x);
+
+
+/* Confluent hypergeometric function for integer parameters.
+ * 1F1[m,n,x] = M(m,n,x)
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_1F1_int_e(const int m, const int n, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_1F1_int(const int m, const int n, double x);
+
+
+/* Confluent hypergeometric function.
+ * 1F1[a,b,x] = M(a,b,x)
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_1F1_e(const double a, const double b, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_1F1(double a, double b, double x);
+
+
+/* Confluent hypergeometric function for integer parameters.
+ * U(m,n,x)
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_U_int_e(const int m, const int n, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_U_int(const int m, const int n, const double x);
+
+
+/* Confluent hypergeometric function for integer parameters.
+ * U(m,n,x)
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_U_int_e10_e(const int m, const int n, const double x, gsl_sf_result_e10 * result);
+
+
+/* Confluent hypergeometric function.
+ * U(a,b,x)
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_U_e(const double a, const double b, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_U(const double a, const double b, const double x);
+
+
+/* Confluent hypergeometric function.
+ * U(a,b,x)
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_U_e10_e(const double a, const double b, const double x, gsl_sf_result_e10 * result);
+
+
+/* Gauss hypergeometric function 2F1[a,b,c,x]
+ * |x| < 1
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_2F1_e(double a, double b, const double c, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_2F1(double a, double b, double c, double x);
+
+
+/* Gauss hypergeometric function
+ * 2F1[aR + I aI, aR - I aI, c, x]
+ * |x| < 1
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_2F1_conj_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_2F1_conj(double aR, double aI, double c, double x);
+
+
+/* Renormalized Gauss hypergeometric function
+ * 2F1[a,b,c,x] / Gamma[c]
+ * |x| < 1
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_2F1_renorm(double a, double b, double c, double x);
+
+
+/* Renormalized Gauss hypergeometric function
+ * 2F1[aR + I aI, aR - I aI, c, x] / Gamma[c]
+ * |x| < 1
+ *
+ * exceptions:
+ */
+int gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_2F1_conj_renorm(double aR, double aI, double c, double x);
+
+
+/* Mysterious hypergeometric function. The series representation
+ * is a divergent hypergeometric series. However, for x < 0 we
+ * have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_hyperg_2F0_e(const double a, const double b, const double x, gsl_sf_result * result);
+double gsl_sf_hyperg_2F0(const double a, const double b, const double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_HYPERG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_laguerre.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_laguerre.h
new file mode 100644
index 00000000..0d7f1c37
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_laguerre.h
@@ -0,0 +1,68 @@
+/* specfunc/gsl_sf_laguerre.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_LAGUERRE_H__
+#define __GSL_SF_LAGUERRE_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* L^a_n(x) = (a+1)_n / n! 1F1(-n,a+1,x) */
+
+
+/* Evaluate generalized Laguerre polynomials
+ * using explicit representations.
+ *
+ * exceptions: none
+ */
+int gsl_sf_laguerre_1_e(const double a, const double x, gsl_sf_result * result);
+int gsl_sf_laguerre_2_e(const double a, const double x, gsl_sf_result * result);
+int gsl_sf_laguerre_3_e(const double a, const double x, gsl_sf_result * result);
+double gsl_sf_laguerre_1(double a, double x);
+double gsl_sf_laguerre_2(double a, double x);
+double gsl_sf_laguerre_3(double a, double x);
+
+
+/* Evaluate generalized Laguerre polynomials.
+ *
+ * a > -1.0
+ * n >= 0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_laguerre_n_e(const int n, const double a, const double x, gsl_sf_result * result);
+double gsl_sf_laguerre_n(int n, double a, double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_LAGUERRE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_lambert.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_lambert.h
new file mode 100644
index 00000000..53b70a3a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_lambert.h
@@ -0,0 +1,69 @@
+/* specfunc/gsl_sf_lambert.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_LAMBERT_H__
+#define __GSL_SF_LAMBERT_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Lambert's Function W_0(x)
+ *
+ * W_0(x) is the principal branch of the
+ * implicit function defined by W e^W = x.
+ *
+ * -1/E < x < \infty
+ *
+ * exceptions: GSL_EMAXITER;
+ */
+int gsl_sf_lambert_W0_e(double x, gsl_sf_result * result);
+double gsl_sf_lambert_W0(double x);
+
+
+/* Lambert's Function W_{-1}(x)
+ *
+ * W_{-1}(x) is the second real branch of the
+ * implicit function defined by W e^W = x.
+ * It agrees with W_0(x) when x >= 0.
+ *
+ * -1/E < x < \infty
+ *
+ * exceptions: GSL_MAXITER;
+ */
+int gsl_sf_lambert_Wm1_e(double x, gsl_sf_result * result);
+double gsl_sf_lambert_Wm1(double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_LAMBERT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_legendre.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_legendre.h
new file mode 100644
index 00000000..a7a4b070
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_legendre.h
@@ -0,0 +1,375 @@
+/* specfunc/gsl_sf_legendre.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_LEGENDRE_H__
+#define __GSL_SF_LEGENDRE_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* P_l(x) l >= 0; |x| <= 1
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_Pl_e(const int l, const double x, gsl_sf_result * result);
+double gsl_sf_legendre_Pl(const int l, const double x);
+
+
+/* P_l(x) for l=0,...,lmax; |x| <= 1
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_Pl_array(
+ const int lmax, const double x,
+ double * result_array
+ );
+
+
+/* P_l(x) and P_l'(x) for l=0,...,lmax; |x| <= 1
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_Pl_deriv_array(
+ const int lmax, const double x,
+ double * result_array,
+ double * result_deriv_array
+ );
+
+
+/* P_l(x), l=1,2,3
+ *
+ * exceptions: none
+ */
+int gsl_sf_legendre_P1_e(double x, gsl_sf_result * result);
+int gsl_sf_legendre_P2_e(double x, gsl_sf_result * result);
+int gsl_sf_legendre_P3_e(double x, gsl_sf_result * result);
+double gsl_sf_legendre_P1(const double x);
+double gsl_sf_legendre_P2(const double x);
+double gsl_sf_legendre_P3(const double x);
+
+
+/* Q_0(x), x > -1, x != 1
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_Q0_e(const double x, gsl_sf_result * result);
+double gsl_sf_legendre_Q0(const double x);
+
+
+/* Q_1(x), x > -1, x != 1
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_Q1_e(const double x, gsl_sf_result * result);
+double gsl_sf_legendre_Q1(const double x);
+
+
+/* Q_l(x), x > -1, x != 1, l >= 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_Ql_e(const int l, const double x, gsl_sf_result * result);
+double gsl_sf_legendre_Ql(const int l, const double x);
+
+
+/* P_l^m(x) m >= 0; l >= m; |x| <= 1.0
+ *
+ * Note that this function grows combinatorially with l.
+ * Therefore we can easily generate an overflow for l larger
+ * than about 150.
+ *
+ * There is no trouble for small m, but when m and l are both large,
+ * then there will be trouble. Rather than allow overflows, these
+ * functions refuse to calculate when they can sense that l and m are
+ * too big.
+ *
+ * If you really want to calculate a spherical harmonic, then DO NOT
+ * use this. Instead use legendre_sphPlm() below, which uses a similar
+ * recursion, but with the normalized functions.
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_legendre_Plm_e(const int l, const int m, const double x, gsl_sf_result * result);
+double gsl_sf_legendre_Plm(const int l, const int m, const double x);
+
+
+/* P_l^m(x) m >= 0; l >= m; |x| <= 1.0
+ * l=|m|,...,lmax
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_legendre_Plm_array(
+ const int lmax, const int m, const double x,
+ double * result_array
+ );
+
+
+/* P_l^m(x) and d(P_l^m(x))/dx; m >= 0; lmax >= m; |x| <= 1.0
+ * l=|m|,...,lmax
+ *
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_legendre_Plm_deriv_array(
+ const int lmax, const int m, const double x,
+ double * result_array,
+ double * result_deriv_array
+ );
+
+
+/* P_l^m(x), normalized properly for use in spherical harmonics
+ * m >= 0; l >= m; |x| <= 1.0
+ *
+ * There is no overflow problem, as there is for the
+ * standard normalization of P_l^m(x).
+ *
+ * Specifically, it returns:
+ *
+ * sqrt((2l+1)/(4pi)) sqrt((l-m)!/(l+m)!) P_l^m(x)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_sphPlm_e(const int l, int m, const double x, gsl_sf_result * result);
+double gsl_sf_legendre_sphPlm(const int l, const int m, const double x);
+
+
+/* sphPlm(l,m,x) values
+ * m >= 0; l >= m; |x| <= 1.0
+ * l=|m|,...,lmax
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_sphPlm_array(
+ const int lmax, int m, const double x,
+ double * result_array
+ );
+
+
+/* sphPlm(l,m,x) and d(sphPlm(l,m,x))/dx values
+ * m >= 0; l >= m; |x| <= 1.0
+ * l=|m|,...,lmax
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_sphPlm_deriv_array(
+ const int lmax, const int m, const double x,
+ double * result_array,
+ double * result_deriv_array
+ );
+
+
+
+/* size of result_array[] needed for the array versions of Plm
+ * (lmax - m + 1)
+ */
+int gsl_sf_legendre_array_size(const int lmax, const int m);
+
+/* Irregular Spherical Conical Function
+ * P^{1/2}_{-1/2 + I lambda}(x)
+ *
+ * x > -1.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_conicalP_half_e(const double lambda, const double x, gsl_sf_result * result);
+double gsl_sf_conicalP_half(const double lambda, const double x);
+
+
+/* Regular Spherical Conical Function
+ * P^{-1/2}_{-1/2 + I lambda}(x)
+ *
+ * x > -1.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_conicalP_mhalf_e(const double lambda, const double x, gsl_sf_result * result);
+double gsl_sf_conicalP_mhalf(const double lambda, const double x);
+
+
+/* Conical Function
+ * P^{0}_{-1/2 + I lambda}(x)
+ *
+ * x > -1.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_conicalP_0_e(const double lambda, const double x, gsl_sf_result * result);
+double gsl_sf_conicalP_0(const double lambda, const double x);
+
+
+/* Conical Function
+ * P^{1}_{-1/2 + I lambda}(x)
+ *
+ * x > -1.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_conicalP_1_e(const double lambda, const double x, gsl_sf_result * result);
+double gsl_sf_conicalP_1(const double lambda, const double x);
+
+
+/* Regular Spherical Conical Function
+ * P^{-1/2-l}_{-1/2 + I lambda}(x)
+ *
+ * x > -1.0, l >= -1
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_conicalP_sph_reg_e(const int l, const double lambda, const double x, gsl_sf_result * result);
+double gsl_sf_conicalP_sph_reg(const int l, const double lambda, const double x);
+
+
+/* Regular Cylindrical Conical Function
+ * P^{-m}_{-1/2 + I lambda}(x)
+ *
+ * x > -1.0, m >= -1
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_conicalP_cyl_reg_e(const int m, const double lambda, const double x, gsl_sf_result * result);
+double gsl_sf_conicalP_cyl_reg(const int m, const double lambda, const double x);
+
+
+/* The following spherical functions are specializations
+ * of Legendre functions which give the regular eigenfunctions
+ * of the Laplacian on a 3-dimensional hyperbolic space.
+ * Of particular interest is the flat limit, which is
+ * Flat-Lim := {lambda->Inf, eta->0, lambda*eta fixed}.
+ */
+
+/* Zeroth radial eigenfunction of the Laplacian on the
+ * 3-dimensional hyperbolic space.
+ *
+ * legendre_H3d_0(lambda,eta) := sin(lambda*eta)/(lambda*sinh(eta))
+ *
+ * Normalization:
+ * Flat-Lim legendre_H3d_0(lambda,eta) = j_0(lambda*eta)
+ *
+ * eta >= 0.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_H3d_0_e(const double lambda, const double eta, gsl_sf_result * result);
+double gsl_sf_legendre_H3d_0(const double lambda, const double eta);
+
+
+/* First radial eigenfunction of the Laplacian on the
+ * 3-dimensional hyperbolic space.
+ *
+ * legendre_H3d_1(lambda,eta) :=
+ * 1/sqrt(lambda^2 + 1) sin(lam eta)/(lam sinh(eta))
+ * (coth(eta) - lambda cot(lambda*eta))
+ *
+ * Normalization:
+ * Flat-Lim legendre_H3d_1(lambda,eta) = j_1(lambda*eta)
+ *
+ * eta >= 0.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_H3d_1_e(const double lambda, const double eta, gsl_sf_result * result);
+double gsl_sf_legendre_H3d_1(const double lambda, const double eta);
+
+
+/* l'th radial eigenfunction of the Laplacian on the
+ * 3-dimensional hyperbolic space.
+ *
+ * Normalization:
+ * Flat-Lim legendre_H3d_l(l,lambda,eta) = j_l(lambda*eta)
+ *
+ * eta >= 0.0, l >= 0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_legendre_H3d_e(const int l, const double lambda, const double eta, gsl_sf_result * result);
+double gsl_sf_legendre_H3d(const int l, const double lambda, const double eta);
+
+
+/* Array of H3d(ell), 0 <= ell <= lmax
+ */
+int gsl_sf_legendre_H3d_array(const int lmax, const double lambda, const double eta, double * result_array);
+
+/* associated legendre P_{lm} routines */
+
+typedef enum
+{
+ GSL_SF_LEGENDRE_SCHMIDT,
+ GSL_SF_LEGENDRE_SPHARM,
+ GSL_SF_LEGENDRE_FULL,
+ GSL_SF_LEGENDRE_NONE
+} gsl_sf_legendre_t;
+
+int gsl_sf_legendre_array(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ double result_array[]);
+int gsl_sf_legendre_array_e(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ const double csphase,
+ double result_array[]);
+int gsl_sf_legendre_deriv_array(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ double result_array[],
+ double result_deriv_array[]);
+int gsl_sf_legendre_deriv_array_e(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ const double csphase,
+ double result_array[],
+ double result_deriv_array[]);
+int gsl_sf_legendre_deriv_alt_array(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ double result_array[],
+ double result_deriv_array[]);
+int gsl_sf_legendre_deriv_alt_array_e(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ const double csphase,
+ double result_array[],
+ double result_deriv_array[]);
+int gsl_sf_legendre_deriv2_array(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ double result_array[],
+ double result_deriv_array[],
+ double result_deriv2_array[]);
+int gsl_sf_legendre_deriv2_array_e(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ const double csphase,
+ double result_array[],
+ double result_deriv_array[],
+ double result_deriv2_array[]);
+int gsl_sf_legendre_deriv2_alt_array(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ double result_array[],
+ double result_deriv_array[],
+ double result_deriv2_array[]);
+int gsl_sf_legendre_deriv2_alt_array_e(const gsl_sf_legendre_t norm,
+ const size_t lmax, const double x,
+ const double csphase,
+ double result_array[],
+ double result_deriv_array[],
+ double result_deriv2_array[]);
+size_t gsl_sf_legendre_array_n(const size_t lmax);
+size_t gsl_sf_legendre_array_index(const size_t l, const size_t m);
+size_t gsl_sf_legendre_nlm(const size_t lmax);
+
+__END_DECLS
+
+#endif /* __GSL_SF_LEGENDRE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_log.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_log.h
new file mode 100644
index 00000000..92aa6857
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_log.h
@@ -0,0 +1,82 @@
+/* specfunc/gsl_sf_log.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_LOG_H__
+#define __GSL_SF_LOG_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Provide a logarithm function with GSL semantics.
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_log_e(const double x, gsl_sf_result * result);
+double gsl_sf_log(const double x);
+
+
+/* Log(|x|)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_log_abs_e(const double x, gsl_sf_result * result);
+double gsl_sf_log_abs(const double x);
+
+
+/* Complex Logarithm
+ * exp(lnr + I theta) = zr + I zi
+ * Returns argument in [-pi,pi].
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_complex_log_e(const double zr, const double zi, gsl_sf_result * lnr, gsl_sf_result * theta);
+
+
+/* Log(1 + x)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_log_1plusx_e(const double x, gsl_sf_result * result);
+double gsl_sf_log_1plusx(const double x);
+
+
+/* Log(1 + x) - x
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_log_1plusx_mx_e(const double x, gsl_sf_result * result);
+double gsl_sf_log_1plusx_mx(const double x);
+
+__END_DECLS
+
+#endif /* __GSL_SF_LOG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_mathieu.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_mathieu.h
new file mode 100644
index 00000000..8dc8d14e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_mathieu.h
@@ -0,0 +1,113 @@
+/* specfunc/gsl_sf_mathieu.h
+ *
+ * Copyright (C) 2002 Lowell Johnson
+ *
+ * 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 3 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* Author: L. Johnson */
+
+#ifndef __GSL_SF_MATHIEU_H__
+#define __GSL_SF_MATHIEU_H__
+
+#include <gsl/gsl_sf_result.h>
+#include <gsl/gsl_eigen.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+#define GSL_SF_MATHIEU_COEFF 100
+
+typedef struct
+{
+ size_t size;
+ size_t even_order;
+ size_t odd_order;
+ int extra_values;
+ double qa; /* allow for caching of results: not implemented yet */
+ double qb; /* allow for caching of results: not implemented yet */
+ double *aa;
+ double *bb;
+ double *dd;
+ double *ee;
+ double *tt;
+ double *e2;
+ double *zz;
+ gsl_vector *eval;
+ gsl_matrix *evec;
+ gsl_eigen_symmv_workspace *wmat;
+} gsl_sf_mathieu_workspace;
+
+
+/* Compute an array of characteristic (eigen) values from the recurrence
+ matrices for the Mathieu equations. */
+int gsl_sf_mathieu_a_array(int order_min, int order_max, double qq, gsl_sf_mathieu_workspace *work, double result_array[]);
+int gsl_sf_mathieu_b_array(int order_min, int order_max, double qq, gsl_sf_mathieu_workspace *work, double result_array[]);
+
+/* Compute the characteristic value for a Mathieu function of order n and
+ type ntype. */
+int gsl_sf_mathieu_a_e(int order, double qq, gsl_sf_result *result);
+double gsl_sf_mathieu_a(int order, double qq);
+int gsl_sf_mathieu_b_e(int order, double qq, gsl_sf_result *result);
+double gsl_sf_mathieu_b(int order, double qq);
+
+/* Compute the Fourier coefficients for a Mathieu function. */
+int gsl_sf_mathieu_a_coeff(int order, double qq, double aa, double coeff[]);
+int gsl_sf_mathieu_b_coeff(int order, double qq, double aa, double coeff[]);
+
+/* Allocate computational storage space for eigenvalue solution. */
+gsl_sf_mathieu_workspace *gsl_sf_mathieu_alloc(const size_t nn,
+ const double qq);
+void gsl_sf_mathieu_free(gsl_sf_mathieu_workspace *workspace);
+
+/* Compute an angular Mathieu function. */
+int gsl_sf_mathieu_ce_e(int order, double qq, double zz, gsl_sf_result *result);
+double gsl_sf_mathieu_ce(int order, double qq, double zz);
+int gsl_sf_mathieu_se_e(int order, double qq, double zz, gsl_sf_result *result);
+double gsl_sf_mathieu_se(int order, double qq, double zz);
+int gsl_sf_mathieu_ce_array(int nmin, int nmax, double qq, double zz,
+ gsl_sf_mathieu_workspace *work,
+ double result_array[]);
+int gsl_sf_mathieu_se_array(int nmin, int nmax, double qq, double zz,
+ gsl_sf_mathieu_workspace *work,
+ double result_array[]);
+
+/* Compute a radial Mathieu function. */
+int gsl_sf_mathieu_Mc_e(int kind, int order, double qq, double zz,
+ gsl_sf_result *result);
+double gsl_sf_mathieu_Mc(int kind, int order, double qq, double zz);
+int gsl_sf_mathieu_Ms_e(int kind, int order, double qq, double zz,
+ gsl_sf_result *result);
+double gsl_sf_mathieu_Ms(int kind, int order, double qq, double zz);
+int gsl_sf_mathieu_Mc_array(int kind, int nmin, int nmax, double qq,
+ double zz, gsl_sf_mathieu_workspace *work,
+ double result_array[]);
+int gsl_sf_mathieu_Ms_array(int kind, int nmin, int nmax, double qq,
+ double zz, gsl_sf_mathieu_workspace *work,
+ double result_array[]);
+
+
+__END_DECLS
+
+#endif /* !__GSL_SF_MATHIEU_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_pow_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_pow_int.h
new file mode 100644
index 00000000..e535d572
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_pow_int.h
@@ -0,0 +1,49 @@
+/* specfunc/gsl_sf_pow_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_POW_INT_H__
+#define __GSL_SF_POW_INT_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Calculate x^n.
+ * Does not check for overflow/underflow.
+ */
+int gsl_sf_pow_int_e(double x, int n, gsl_sf_result * result);
+double gsl_sf_pow_int(const double x, const int n);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_POW_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_psi.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_psi.h
new file mode 100644
index 00000000..ec611790
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_psi.h
@@ -0,0 +1,113 @@
+/* specfunc/gsl_sf_psi.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_PSI_H__
+#define __GSL_SF_PSI_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Poly-Gamma Functions
+ *
+ * psi(m,x) := (d/dx)^m psi(0,x) = (d/dx)^{m+1} log(gamma(x))
+ */
+
+
+/* Di-Gamma Function psi(n) = psi(0,n)
+ *
+ * n > 0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_psi_int_e(const int n, gsl_sf_result * result);
+double gsl_sf_psi_int(const int n);
+
+
+/* Di-Gamma Function psi(x) = psi(0, x)
+ *
+ * x != 0.0, -1.0, -2.0, ...
+ * exceptions: GSL_EDOM, GSL_ELOSS
+ */
+int gsl_sf_psi_e(const double x, gsl_sf_result * result);
+double gsl_sf_psi(const double x);
+
+
+/* Di-Gamma Function Re[psi(1 + I y)]
+ *
+ * exceptions: none
+ */
+int gsl_sf_psi_1piy_e(const double y, gsl_sf_result * result);
+double gsl_sf_psi_1piy(const double y);
+
+
+/* Di-Gamma Function psi(z) for general complex argument z = x + iy
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_complex_psi_e(
+ const double x,
+ const double y,
+ gsl_sf_result * result_re,
+ gsl_sf_result * result_im
+ );
+
+
+/* Tri-Gamma Function psi^(1)(n)
+ *
+ * n > 0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_psi_1_int_e(const int n, gsl_sf_result * result);
+double gsl_sf_psi_1_int(const int n);
+
+
+/* Tri-Gamma Function psi^(1)(x)
+ *
+ * x != 0.0, -1.0, -2.0, ...
+ * exceptions: GSL_EDOM, GSL_ELOSS
+ */
+int gsl_sf_psi_1_e(const double x, gsl_sf_result * result);
+double gsl_sf_psi_1(const double x);
+
+
+/* Poly-Gamma Function psi^(n)(x)
+ *
+ * n >= 0, x > 0.0
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_psi_n_e(const int n, const double x, gsl_sf_result * result);
+double gsl_sf_psi_n(const int n, const double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_PSI_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_result.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_result.h
new file mode 100644
index 00000000..512bad7c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_result.h
@@ -0,0 +1,59 @@
+/* specfunc/gsl_sf_result.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_RESULT_H__
+#define __GSL_SF_RESULT_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+struct gsl_sf_result_struct {
+ double val;
+ double err;
+};
+typedef struct gsl_sf_result_struct gsl_sf_result;
+
+#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
+
+
+struct gsl_sf_result_e10_struct {
+ double val;
+ double err;
+ int e10;
+};
+typedef struct gsl_sf_result_e10_struct gsl_sf_result_e10;
+
+
+int gsl_sf_result_smash_e(const gsl_sf_result_e10 * re, gsl_sf_result * r);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_RESULT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_synchrotron.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_synchrotron.h
new file mode 100644
index 00000000..26028c89
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_synchrotron.h
@@ -0,0 +1,60 @@
+/* specfunc/gsl_sf_synchrotron.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_SYNCHROTRON_H__
+#define __GSL_SF_SYNCHROTRON_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* First synchrotron function:
+ * synchrotron_1(x) = x Integral[ K_{5/3}(t), {t, x, Infinity}]
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_synchrotron_1_e(const double x, gsl_sf_result * result);
+double gsl_sf_synchrotron_1(const double x);
+
+
+/* Second synchroton function:
+ * synchrotron_2(x) = x * K_{2/3}(x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_synchrotron_2_e(const double x, gsl_sf_result * result);
+double gsl_sf_synchrotron_2(const double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_SYNCHROTRON_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_transport.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_transport.h
new file mode 100644
index 00000000..c0fd7fc2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_transport.h
@@ -0,0 +1,78 @@
+/* specfunc/gsl_sf_transport.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_TRANSPORT_H__
+#define __GSL_SF_TRANSPORT_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Transport function:
+ * J(n,x) := Integral[ t^n e^t /(e^t - 1)^2, {t,0,x}]
+ */
+
+/* J(2,x)
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_transport_2_e(const double x, gsl_sf_result * result);
+double gsl_sf_transport_2(const double x);
+
+
+/* J(3,x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_transport_3_e(const double x, gsl_sf_result * result);
+double gsl_sf_transport_3(const double x);
+
+
+/* J(4,x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_transport_4_e(const double x, gsl_sf_result * result);
+double gsl_sf_transport_4(const double x);
+
+
+/* J(5,x)
+ *
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW
+ */
+int gsl_sf_transport_5_e(const double x, gsl_sf_result * result);
+double gsl_sf_transport_5(const double x);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_TRANSPORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_trig.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_trig.h
new file mode 100644
index 00000000..e2c5722d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_trig.h
@@ -0,0 +1,152 @@
+/* specfunc/gsl_sf_trig.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_TRIG_H__
+#define __GSL_SF_TRIG_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Sin(x) with GSL semantics. This is actually important
+ * because we want to control the error estimate, and trying
+ * to guess the error for the standard library implementation
+ * every time it is used would be a little goofy.
+ */
+int gsl_sf_sin_e(double x, gsl_sf_result * result);
+double gsl_sf_sin(const double x);
+
+
+/* Cos(x) with GSL semantics.
+ */
+int gsl_sf_cos_e(double x, gsl_sf_result * result);
+double gsl_sf_cos(const double x);
+
+
+/* Hypot(x,y) with GSL semantics.
+ */
+int gsl_sf_hypot_e(const double x, const double y, gsl_sf_result * result);
+double gsl_sf_hypot(const double x, const double y);
+
+
+/* Sin(z) for complex z
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_complex_sin_e(const double zr, const double zi, gsl_sf_result * szr, gsl_sf_result * szi);
+
+
+/* Cos(z) for complex z
+ *
+ * exceptions: GSL_EOVRFLW
+ */
+int gsl_sf_complex_cos_e(const double zr, const double zi, gsl_sf_result * czr, gsl_sf_result * czi);
+
+
+/* Log(Sin(z)) for complex z
+ *
+ * exceptions: GSL_EDOM, GSL_ELOSS
+ */
+int gsl_sf_complex_logsin_e(const double zr, const double zi, gsl_sf_result * lszr, gsl_sf_result * lszi);
+
+
+/* Sinc(x) = sin(pi x) / (pi x)
+ *
+ * exceptions: none
+ */
+int gsl_sf_sinc_e(double x, gsl_sf_result * result);
+double gsl_sf_sinc(const double x);
+
+
+/* Log(Sinh(x)), x > 0
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_lnsinh_e(const double x, gsl_sf_result * result);
+double gsl_sf_lnsinh(const double x);
+
+
+/* Log(Cosh(x))
+ *
+ * exceptions: none
+ */
+int gsl_sf_lncosh_e(const double x, gsl_sf_result * result);
+double gsl_sf_lncosh(const double x);
+
+
+/* Convert polar to rectlinear coordinates.
+ *
+ * exceptions: GSL_ELOSS
+ */
+int gsl_sf_polar_to_rect(const double r, const double theta, gsl_sf_result * x, gsl_sf_result * y);
+
+/* Convert rectilinear to polar coordinates.
+ * return argument in range [-pi, pi]
+ *
+ * exceptions: GSL_EDOM
+ */
+int gsl_sf_rect_to_polar(const double x, const double y, gsl_sf_result * r, gsl_sf_result * theta);
+
+/* Sin(x) for quantity with an associated error.
+ */
+int gsl_sf_sin_err_e(const double x, const double dx, gsl_sf_result * result);
+
+
+/* Cos(x) for quantity with an associated error.
+ */
+int gsl_sf_cos_err_e(const double x, const double dx, gsl_sf_result * result);
+
+
+/* Force an angle to lie in the range (-pi,pi].
+ *
+ * exceptions: GSL_ELOSS
+ */
+int gsl_sf_angle_restrict_symm_e(double * theta);
+double gsl_sf_angle_restrict_symm(const double theta);
+
+
+/* Force an angle to lie in the range [0, 2pi)
+ *
+ * exceptions: GSL_ELOSS
+ */
+int gsl_sf_angle_restrict_pos_e(double * theta);
+double gsl_sf_angle_restrict_pos(const double theta);
+
+
+int gsl_sf_angle_restrict_symm_err_e(const double theta, gsl_sf_result * result);
+
+int gsl_sf_angle_restrict_pos_err_e(const double theta, gsl_sf_result * result);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_TRIG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_zeta.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_zeta.h
new file mode 100644
index 00000000..2d7fad0a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sf_zeta.h
@@ -0,0 +1,112 @@
+/* specfunc/gsl_sf_zeta.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2004 Gerard Jungman
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+#ifndef __GSL_SF_ZETA_H__
+#define __GSL_SF_ZETA_H__
+
+#include <gsl/gsl_sf_result.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* Riemann Zeta Function
+ * zeta(n) = Sum[ k^(-n), {k,1,Infinity} ]
+ *
+ * n=integer, n != 1
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_zeta_int_e(const int n, gsl_sf_result * result);
+double gsl_sf_zeta_int(const int n);
+
+
+/* Riemann Zeta Function
+ * zeta(x) = Sum[ k^(-s), {k,1,Infinity} ], s != 1.0
+ *
+ * s != 1.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_zeta_e(const double s, gsl_sf_result * result);
+double gsl_sf_zeta(const double s);
+
+
+/* Riemann Zeta Function minus 1
+ * useful for evaluating the fractional part
+ * of Riemann zeta for large argument
+ *
+ * s != 1.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_zetam1_e(const double s, gsl_sf_result * result);
+double gsl_sf_zetam1(const double s);
+
+
+/* Riemann Zeta Function minus 1 for integer arg
+ * useful for evaluating the fractional part
+ * of Riemann zeta for large argument
+ *
+ * s != 1.0
+ * exceptions: GSL_EDOM, GSL_EOVRFLW
+ */
+int gsl_sf_zetam1_int_e(const int s, gsl_sf_result * result);
+double gsl_sf_zetam1_int(const int s);
+
+
+/* Hurwitz Zeta Function
+ * zeta(s,q) = Sum[ (k+q)^(-s), {k,0,Infinity} ]
+ *
+ * s > 1.0, q > 0.0
+ * exceptions: GSL_EDOM, GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_hzeta_e(const double s, const double q, gsl_sf_result * result);
+double gsl_sf_hzeta(const double s, const double q);
+
+
+/* Eta Function
+ * eta(n) = (1-2^(1-n)) zeta(n)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_eta_int_e(int n, gsl_sf_result * result);
+double gsl_sf_eta_int(const int n);
+
+
+/* Eta Function
+ * eta(s) = (1-2^(1-s)) zeta(s)
+ *
+ * exceptions: GSL_EUNDRFLW, GSL_EOVRFLW
+ */
+int gsl_sf_eta_e(const double s, gsl_sf_result * result);
+double gsl_sf_eta(const double s);
+
+
+__END_DECLS
+
+#endif /* __GSL_SF_ZETA_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_siman.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_siman.h
new file mode 100644
index 00000000..a16f7c7c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_siman.h
@@ -0,0 +1,82 @@
+/* siman/gsl_siman.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000 Mark Galassi
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SIMAN_H__
+#define __GSL_SIMAN_H__
+#include <stdlib.h>
+#include <gsl/gsl_rng.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* types for the function pointers passed to gsl_siman_solve */
+
+typedef double (*gsl_siman_Efunc_t) (void *xp);
+typedef void (*gsl_siman_step_t) (const gsl_rng *r, void *xp, double step_size);
+typedef double (*gsl_siman_metric_t) (void *xp, void *yp);
+typedef void (*gsl_siman_print_t) (void *xp);
+typedef void (*gsl_siman_copy_t) (void *source, void *dest);
+typedef void * (*gsl_siman_copy_construct_t) (void *xp);
+typedef void (*gsl_siman_destroy_t) (void *xp);
+
+/* this structure contains all the information needed to structure the
+ search, beyond the energy function, the step function and the
+ initial guess. */
+
+typedef struct {
+ int n_tries; /* how many points to try for each step */
+ int iters_fixed_T; /* how many iterations at each temperature? */
+ double step_size; /* max step size in the random walk */
+ /* the following parameters are for the Boltzmann distribution */
+ double k, t_initial, mu_t, t_min;
+} gsl_siman_params_t;
+
+/* prototype for the workhorse function */
+
+void gsl_siman_solve(const gsl_rng * r,
+ void *x0_p, gsl_siman_Efunc_t Ef,
+ gsl_siman_step_t take_step,
+ gsl_siman_metric_t distance,
+ gsl_siman_print_t print_position,
+ gsl_siman_copy_t copyfunc,
+ gsl_siman_copy_construct_t copy_constructor,
+ gsl_siman_destroy_t destructor,
+ size_t element_size,
+ gsl_siman_params_t params);
+
+void
+gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef,
+ gsl_siman_step_t take_step,
+ gsl_siman_metric_t distance,
+ gsl_siman_print_t print_position,
+ size_t element_size,
+ gsl_siman_params_t params);
+
+__END_DECLS
+
+#endif /* __GSL_SIMAN_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort.h
new file mode 100644
index 00000000..b1496c2e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort.h
@@ -0,0 +1,20 @@
+#ifndef __GSL_SORT_H__
+#define __GSL_SORT_H__
+
+#include <gsl/gsl_sort_long_double.h>
+#include <gsl/gsl_sort_double.h>
+#include <gsl/gsl_sort_float.h>
+
+#include <gsl/gsl_sort_ulong.h>
+#include <gsl/gsl_sort_long.h>
+
+#include <gsl/gsl_sort_uint.h>
+#include <gsl/gsl_sort_int.h>
+
+#include <gsl/gsl_sort_ushort.h>
+#include <gsl/gsl_sort_short.h>
+
+#include <gsl/gsl_sort_uchar.h>
+#include <gsl/gsl_sort_char.h>
+
+#endif /* __GSL_SORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_char.h
new file mode 100644
index 00000000..a4bf3514
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_char.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_CHAR_H__
+#define __GSL_SORT_CHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_char (char * data, const size_t stride, const size_t n);
+void gsl_sort2_char (char * data1, const size_t stride1, char * data2, const size_t stride2, const size_t n);
+void gsl_sort_char_index (size_t * p, const char * data, const size_t stride, const size_t n);
+
+int gsl_sort_char_smallest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n);
+int gsl_sort_char_smallest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n);
+
+int gsl_sort_char_largest (char * dest, const size_t k, const char * src, const size_t stride, const size_t n);
+int gsl_sort_char_largest_index (size_t * p, const size_t k, const char * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_CHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_double.h
new file mode 100644
index 00000000..3f67f43d
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_double.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_DOUBLE_H__
+#define __GSL_SORT_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort (double * data, const size_t stride, const size_t n);
+void gsl_sort2 (double * data1, const size_t stride1, double * data2, const size_t stride2, const size_t n);
+void gsl_sort_index (size_t * p, const double * data, const size_t stride, const size_t n);
+
+int gsl_sort_smallest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n);
+int gsl_sort_smallest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n);
+
+int gsl_sort_largest (double * dest, const size_t k, const double * src, const size_t stride, const size_t n);
+int gsl_sort_largest_index (size_t * p, const size_t k, const double * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_float.h
new file mode 100644
index 00000000..505a1c6b
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_float.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_FLOAT_H__
+#define __GSL_SORT_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_float (float * data, const size_t stride, const size_t n);
+void gsl_sort2_float (float * data1, const size_t stride1, float * data2, const size_t stride2, const size_t n);
+void gsl_sort_float_index (size_t * p, const float * data, const size_t stride, const size_t n);
+
+int gsl_sort_float_smallest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n);
+int gsl_sort_float_smallest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n);
+
+int gsl_sort_float_largest (float * dest, const size_t k, const float * src, const size_t stride, const size_t n);
+int gsl_sort_float_largest_index (size_t * p, const size_t k, const float * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_int.h
new file mode 100644
index 00000000..7aa8d385
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_int.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_INT_H__
+#define __GSL_SORT_INT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_int (int * data, const size_t stride, const size_t n);
+void gsl_sort2_int (int * data1, const size_t stride1, int * data2, const size_t stride2, const size_t n);
+void gsl_sort_int_index (size_t * p, const int * data, const size_t stride, const size_t n);
+
+int gsl_sort_int_smallest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n);
+int gsl_sort_int_smallest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n);
+
+int gsl_sort_int_largest (int * dest, const size_t k, const int * src, const size_t stride, const size_t n);
+int gsl_sort_int_largest_index (size_t * p, const size_t k, const int * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long.h
new file mode 100644
index 00000000..7f4d6892
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_LONG_H__
+#define __GSL_SORT_LONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_long (long * data, const size_t stride, const size_t n);
+void gsl_sort2_long (long * data1, const size_t stride1, long * data2, const size_t stride2, const size_t n);
+void gsl_sort_long_index (size_t * p, const long * data, const size_t stride, const size_t n);
+
+int gsl_sort_long_smallest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n);
+int gsl_sort_long_smallest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n);
+
+int gsl_sort_long_largest (long * dest, const size_t k, const long * src, const size_t stride, const size_t n);
+int gsl_sort_long_largest_index (size_t * p, const size_t k, const long * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_LONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long_double.h
new file mode 100644
index 00000000..164fd231
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_long_double.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_LONG_DOUBLE_H__
+#define __GSL_SORT_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_long_double (long double * data, const size_t stride, const size_t n);
+void gsl_sort2_long_double (long double * data1, const size_t stride1, long double * data2, const size_t stride2, const size_t n);
+void gsl_sort_long_double_index (size_t * p, const long double * data, const size_t stride, const size_t n);
+
+int gsl_sort_long_double_smallest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n);
+int gsl_sort_long_double_smallest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n);
+
+int gsl_sort_long_double_largest (long double * dest, const size_t k, const long double * src, const size_t stride, const size_t n);
+int gsl_sort_long_double_largest_index (size_t * p, const size_t k, const long double * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_short.h
new file mode 100644
index 00000000..4626e9e2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_short.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_SHORT_H__
+#define __GSL_SORT_SHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_short (short * data, const size_t stride, const size_t n);
+void gsl_sort2_short (short * data1, const size_t stride1, short * data2, const size_t stride2, const size_t n);
+void gsl_sort_short_index (size_t * p, const short * data, const size_t stride, const size_t n);
+
+int gsl_sort_short_smallest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n);
+int gsl_sort_short_smallest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n);
+
+int gsl_sort_short_largest (short * dest, const size_t k, const short * src, const size_t stride, const size_t n);
+int gsl_sort_short_largest_index (size_t * p, const size_t k, const short * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_SHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uchar.h
new file mode 100644
index 00000000..6cd511d5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uchar.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_UCHAR_H__
+#define __GSL_SORT_UCHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_uchar (unsigned char * data, const size_t stride, const size_t n);
+void gsl_sort2_uchar (unsigned char * data1, const size_t stride1, unsigned char * data2, const size_t stride2, const size_t n);
+void gsl_sort_uchar_index (size_t * p, const unsigned char * data, const size_t stride, const size_t n);
+
+int gsl_sort_uchar_smallest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+int gsl_sort_uchar_smallest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+
+int gsl_sort_uchar_largest (unsigned char * dest, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+int gsl_sort_uchar_largest_index (size_t * p, const size_t k, const unsigned char * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_UCHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uint.h
new file mode 100644
index 00000000..639e596f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_uint.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_UINT_H__
+#define __GSL_SORT_UINT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_uint (unsigned int * data, const size_t stride, const size_t n);
+void gsl_sort2_uint (unsigned int * data1, const size_t stride1, unsigned int * data2, const size_t stride2, const size_t n);
+void gsl_sort_uint_index (size_t * p, const unsigned int * data, const size_t stride, const size_t n);
+
+int gsl_sort_uint_smallest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+int gsl_sort_uint_smallest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+
+int gsl_sort_uint_largest (unsigned int * dest, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+int gsl_sort_uint_largest_index (size_t * p, const size_t k, const unsigned int * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_UINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ulong.h
new file mode 100644
index 00000000..4f8e41d4
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ulong.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_ULONG_H__
+#define __GSL_SORT_ULONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_ulong (unsigned long * data, const size_t stride, const size_t n);
+void gsl_sort2_ulong (unsigned long * data1, const size_t stride1, unsigned long * data2, const size_t stride2, const size_t n);
+void gsl_sort_ulong_index (size_t * p, const unsigned long * data, const size_t stride, const size_t n);
+
+int gsl_sort_ulong_smallest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+int gsl_sort_ulong_smallest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+
+int gsl_sort_ulong_largest (unsigned long * dest, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+int gsl_sort_ulong_largest_index (size_t * p, const size_t k, const unsigned long * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_ULONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ushort.h
new file mode 100644
index 00000000..6da3d107
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_ushort.h
@@ -0,0 +1,51 @@
+/* sort/gsl_sort_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_USHORT_H__
+#define __GSL_SORT_USHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_ushort (unsigned short * data, const size_t stride, const size_t n);
+void gsl_sort2_ushort (unsigned short * data1, const size_t stride1, unsigned short * data2, const size_t stride2, const size_t n);
+void gsl_sort_ushort_index (size_t * p, const unsigned short * data, const size_t stride, const size_t n);
+
+int gsl_sort_ushort_smallest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+int gsl_sort_ushort_smallest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+
+int gsl_sort_ushort_largest (unsigned short * dest, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+int gsl_sort_ushort_largest_index (size_t * p, const size_t k, const unsigned short * src, const size_t stride, const size_t n);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_USHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector.h
new file mode 100644
index 00000000..d65a9ee9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector.h
@@ -0,0 +1,20 @@
+#ifndef __GSL_SORT_VECTOR_H__
+#define __GSL_SORT_VECTOR_H__
+
+#include <gsl/gsl_sort_vector_long_double.h>
+#include <gsl/gsl_sort_vector_double.h>
+#include <gsl/gsl_sort_vector_float.h>
+
+#include <gsl/gsl_sort_vector_ulong.h>
+#include <gsl/gsl_sort_vector_long.h>
+
+#include <gsl/gsl_sort_vector_uint.h>
+#include <gsl/gsl_sort_vector_int.h>
+
+#include <gsl/gsl_sort_vector_ushort.h>
+#include <gsl/gsl_sort_vector_short.h>
+
+#include <gsl/gsl_sort_vector_uchar.h>
+#include <gsl/gsl_sort_vector_char.h>
+
+#endif /* __GSL_SORT_VECTOR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_char.h
new file mode 100644
index 00000000..39721fbd
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_char.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_CHAR_H__
+#define __GSL_SORT_VECTOR_CHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_char.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_char (gsl_vector_char * v);
+void gsl_sort_vector2_char (gsl_vector_char * v1, gsl_vector_char * v2);
+int gsl_sort_vector_char_index (gsl_permutation * p, const gsl_vector_char * v);
+
+int gsl_sort_vector_char_smallest (char * dest, const size_t k, const gsl_vector_char * v);
+int gsl_sort_vector_char_largest (char * dest, const size_t k, const gsl_vector_char * v);
+
+int gsl_sort_vector_char_smallest_index (size_t * p, const size_t k, const gsl_vector_char * v);
+int gsl_sort_vector_char_largest_index (size_t * p, const size_t k, const gsl_vector_char * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_CHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_double.h
new file mode 100644
index 00000000..f60a7447
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_double.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_DOUBLE_H__
+#define __GSL_SORT_VECTOR_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector (gsl_vector * v);
+void gsl_sort_vector2 (gsl_vector * v1, gsl_vector * v2);
+int gsl_sort_vector_index (gsl_permutation * p, const gsl_vector * v);
+
+int gsl_sort_vector_smallest (double * dest, const size_t k, const gsl_vector * v);
+int gsl_sort_vector_largest (double * dest, const size_t k, const gsl_vector * v);
+
+int gsl_sort_vector_smallest_index (size_t * p, const size_t k, const gsl_vector * v);
+int gsl_sort_vector_largest_index (size_t * p, const size_t k, const gsl_vector * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_float.h
new file mode 100644
index 00000000..fe035c3a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_float.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_FLOAT_H__
+#define __GSL_SORT_VECTOR_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_float (gsl_vector_float * v);
+void gsl_sort_vector2_float (gsl_vector_float * v1, gsl_vector_float * v2);
+int gsl_sort_vector_float_index (gsl_permutation * p, const gsl_vector_float * v);
+
+int gsl_sort_vector_float_smallest (float * dest, const size_t k, const gsl_vector_float * v);
+int gsl_sort_vector_float_largest (float * dest, const size_t k, const gsl_vector_float * v);
+
+int gsl_sort_vector_float_smallest_index (size_t * p, const size_t k, const gsl_vector_float * v);
+int gsl_sort_vector_float_largest_index (size_t * p, const size_t k, const gsl_vector_float * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_int.h
new file mode 100644
index 00000000..3179bca1
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_int.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_INT_H__
+#define __GSL_SORT_VECTOR_INT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_int.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_int (gsl_vector_int * v);
+void gsl_sort_vector2_int (gsl_vector_int * v1, gsl_vector_int * v2);
+int gsl_sort_vector_int_index (gsl_permutation * p, const gsl_vector_int * v);
+
+int gsl_sort_vector_int_smallest (int * dest, const size_t k, const gsl_vector_int * v);
+int gsl_sort_vector_int_largest (int * dest, const size_t k, const gsl_vector_int * v);
+
+int gsl_sort_vector_int_smallest_index (size_t * p, const size_t k, const gsl_vector_int * v);
+int gsl_sort_vector_int_largest_index (size_t * p, const size_t k, const gsl_vector_int * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long.h
new file mode 100644
index 00000000..41eebeca
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_LONG_H__
+#define __GSL_SORT_VECTOR_LONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_long.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_long (gsl_vector_long * v);
+void gsl_sort_vector2_long (gsl_vector_long * v1, gsl_vector_long * v2);
+int gsl_sort_vector_long_index (gsl_permutation * p, const gsl_vector_long * v);
+
+int gsl_sort_vector_long_smallest (long * dest, const size_t k, const gsl_vector_long * v);
+int gsl_sort_vector_long_largest (long * dest, const size_t k, const gsl_vector_long * v);
+
+int gsl_sort_vector_long_smallest_index (size_t * p, const size_t k, const gsl_vector_long * v);
+int gsl_sort_vector_long_largest_index (size_t * p, const size_t k, const gsl_vector_long * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_LONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long_double.h
new file mode 100644
index 00000000..4409d061
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_long_double.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_LONG_DOUBLE_H__
+#define __GSL_SORT_VECTOR_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_long_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_long_double (gsl_vector_long_double * v);
+void gsl_sort_vector2_long_double (gsl_vector_long_double * v1, gsl_vector_long_double * v2);
+int gsl_sort_vector_long_double_index (gsl_permutation * p, const gsl_vector_long_double * v);
+
+int gsl_sort_vector_long_double_smallest (long double * dest, const size_t k, const gsl_vector_long_double * v);
+int gsl_sort_vector_long_double_largest (long double * dest, const size_t k, const gsl_vector_long_double * v);
+
+int gsl_sort_vector_long_double_smallest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);
+int gsl_sort_vector_long_double_largest_index (size_t * p, const size_t k, const gsl_vector_long_double * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_short.h
new file mode 100644
index 00000000..f25e8695
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_short.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_SHORT_H__
+#define __GSL_SORT_VECTOR_SHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_short.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_short (gsl_vector_short * v);
+void gsl_sort_vector2_short (gsl_vector_short * v1, gsl_vector_short * v2);
+int gsl_sort_vector_short_index (gsl_permutation * p, const gsl_vector_short * v);
+
+int gsl_sort_vector_short_smallest (short * dest, const size_t k, const gsl_vector_short * v);
+int gsl_sort_vector_short_largest (short * dest, const size_t k, const gsl_vector_short * v);
+
+int gsl_sort_vector_short_smallest_index (size_t * p, const size_t k, const gsl_vector_short * v);
+int gsl_sort_vector_short_largest_index (size_t * p, const size_t k, const gsl_vector_short * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_SHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uchar.h
new file mode 100644
index 00000000..edc34085
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uchar.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_UCHAR_H__
+#define __GSL_SORT_VECTOR_UCHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_uchar.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_uchar (gsl_vector_uchar * v);
+void gsl_sort_vector2_uchar (gsl_vector_uchar * v1, gsl_vector_uchar * v2);
+int gsl_sort_vector_uchar_index (gsl_permutation * p, const gsl_vector_uchar * v);
+
+int gsl_sort_vector_uchar_smallest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v);
+int gsl_sort_vector_uchar_largest (unsigned char * dest, const size_t k, const gsl_vector_uchar * v);
+
+int gsl_sort_vector_uchar_smallest_index (size_t * p, const size_t k, const gsl_vector_uchar * v);
+int gsl_sort_vector_uchar_largest_index (size_t * p, const size_t k, const gsl_vector_uchar * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_UCHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uint.h
new file mode 100644
index 00000000..6e45b845
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_uint.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_UINT_H__
+#define __GSL_SORT_VECTOR_UINT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_uint.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_uint (gsl_vector_uint * v);
+void gsl_sort_vector2_uint (gsl_vector_uint * v1, gsl_vector_uint * v2);
+int gsl_sort_vector_uint_index (gsl_permutation * p, const gsl_vector_uint * v);
+
+int gsl_sort_vector_uint_smallest (unsigned int * dest, const size_t k, const gsl_vector_uint * v);
+int gsl_sort_vector_uint_largest (unsigned int * dest, const size_t k, const gsl_vector_uint * v);
+
+int gsl_sort_vector_uint_smallest_index (size_t * p, const size_t k, const gsl_vector_uint * v);
+int gsl_sort_vector_uint_largest_index (size_t * p, const size_t k, const gsl_vector_uint * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_UINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ulong.h
new file mode 100644
index 00000000..e6510575
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ulong.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_ULONG_H__
+#define __GSL_SORT_VECTOR_ULONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_ulong.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_ulong (gsl_vector_ulong * v);
+void gsl_sort_vector2_ulong (gsl_vector_ulong * v1, gsl_vector_ulong * v2);
+int gsl_sort_vector_ulong_index (gsl_permutation * p, const gsl_vector_ulong * v);
+
+int gsl_sort_vector_ulong_smallest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v);
+int gsl_sort_vector_ulong_largest (unsigned long * dest, const size_t k, const gsl_vector_ulong * v);
+
+int gsl_sort_vector_ulong_smallest_index (size_t * p, const size_t k, const gsl_vector_ulong * v);
+int gsl_sort_vector_ulong_largest_index (size_t * p, const size_t k, const gsl_vector_ulong * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_ULONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ushort.h
new file mode 100644
index 00000000..09eb0bd1
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sort_vector_ushort.h
@@ -0,0 +1,52 @@
+/* sort/gsl_sort_vector_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Thomas Walter, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SORT_VECTOR_USHORT_H__
+#define __GSL_SORT_VECTOR_USHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_permutation.h>
+#include <gsl/gsl_vector_ushort.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void gsl_sort_vector_ushort (gsl_vector_ushort * v);
+void gsl_sort_vector2_ushort (gsl_vector_ushort * v1, gsl_vector_ushort * v2);
+int gsl_sort_vector_ushort_index (gsl_permutation * p, const gsl_vector_ushort * v);
+
+int gsl_sort_vector_ushort_smallest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v);
+int gsl_sort_vector_ushort_largest (unsigned short * dest, const size_t k, const gsl_vector_ushort * v);
+
+int gsl_sort_vector_ushort_smallest_index (size_t * p, const size_t k, const gsl_vector_ushort * v);
+int gsl_sort_vector_ushort_largest_index (size_t * p, const size_t k, const gsl_vector_ushort * v);
+
+__END_DECLS
+
+#endif /* __GSL_SORT_VECTOR_USHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_spblas.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spblas.h
new file mode 100644
index 00000000..9d66088f
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spblas.h
@@ -0,0 +1,58 @@
+/* gsl_spblas.h
+ *
+ * Copyright (C) 2012-2014 Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SPBLAS_H__
+#define __GSL_SPBLAS_H__
+
+#include <stdlib.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_spmatrix.h>
+#include <gsl/gsl_blas.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/*
+ * Prototypes
+ */
+
+int gsl_spblas_dgemv(const CBLAS_TRANSPOSE_t TransA, const double alpha,
+ const gsl_spmatrix *A, const gsl_vector *x,
+ const double beta, gsl_vector *y);
+int gsl_spblas_dgemm(const double alpha, const gsl_spmatrix *A,
+ const gsl_spmatrix *B, gsl_spmatrix *C);
+size_t gsl_spblas_scatter(const gsl_spmatrix *A, const size_t j,
+ const double alpha, size_t *w, double *x,
+ const size_t mark, gsl_spmatrix *C, size_t nz);
+
+__END_DECLS
+
+#endif /* __GSL_SPBLAS_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_specfunc.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_specfunc.h
new file mode 100644
index 00000000..e07b5aa0
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_specfunc.h
@@ -0,0 +1,10 @@
+/* Author: G. Jungman */
+
+
+/* Convenience header */
+#ifndef __GSL_SPECFUNC_H__
+#define __GSL_SPECFUNC_H__
+
+#include <gsl/gsl_sf.h>
+
+#endif /* __GSL_SPECFUNC_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_splinalg.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_splinalg.h
new file mode 100644
index 00000000..265b6ae6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_splinalg.h
@@ -0,0 +1,79 @@
+/* gsl_splinalg.h
+ *
+ * Copyright (C) 2012-2014 Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SPLINALG_H__
+#define __GSL_SPLINALG_H__
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_spmatrix.h>
+#include <gsl/gsl_linalg.h>
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* iteration solver type */
+typedef struct
+{
+ const char *name;
+ void * (*alloc) (const size_t n, const size_t m);
+ int (*iterate) (const gsl_spmatrix *A, const gsl_vector *b,
+ const double tol, gsl_vector *x, void *);
+ double (*normr)(const void *);
+ void (*free) (void *);
+} gsl_splinalg_itersolve_type;
+
+typedef struct
+{
+ const gsl_splinalg_itersolve_type * type;
+ double normr; /* current residual norm || b - A x || */
+ void * state;
+} gsl_splinalg_itersolve;
+
+/* available types */
+GSL_VAR const gsl_splinalg_itersolve_type * gsl_splinalg_itersolve_gmres;
+
+/*
+ * Prototypes
+ */
+gsl_splinalg_itersolve *
+gsl_splinalg_itersolve_alloc(const gsl_splinalg_itersolve_type *T,
+ const size_t n, const size_t m);
+void gsl_splinalg_itersolve_free(gsl_splinalg_itersolve *w);
+const char *gsl_splinalg_itersolve_name(const gsl_splinalg_itersolve *w);
+int gsl_splinalg_itersolve_iterate(const gsl_spmatrix *A,
+ const gsl_vector *b,
+ const double tol, gsl_vector *x,
+ gsl_splinalg_itersolve *w);
+double gsl_splinalg_itersolve_normr(const gsl_splinalg_itersolve *w);
+
+__END_DECLS
+
+#endif /* __GSL_SPLINALG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_spline.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spline.h
new file mode 100644
index 00000000..08255ca8
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spline.h
@@ -0,0 +1,101 @@
+/* interpolation/gsl_spline.h
+ *
+ * Copyright (C) 2001, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SPLINE_H__
+#define __GSL_SPLINE_H__
+#include <stdlib.h>
+#include <gsl/gsl_interp.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/* general interpolation object */
+typedef struct {
+ gsl_interp * interp;
+ double * x;
+ double * y;
+ size_t size;
+} gsl_spline;
+
+gsl_spline *
+gsl_spline_alloc(const gsl_interp_type * T, size_t size);
+
+int
+gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size);
+
+const char * gsl_spline_name(const gsl_spline * spline);
+unsigned int gsl_spline_min_size(const gsl_spline * spline);
+
+
+int
+gsl_spline_eval_e(const gsl_spline * spline, double x,
+ gsl_interp_accel * a, double * y);
+
+double
+gsl_spline_eval(const gsl_spline * spline, double x, gsl_interp_accel * a);
+
+int
+gsl_spline_eval_deriv_e(const gsl_spline * spline,
+ double x,
+ gsl_interp_accel * a,
+ double * y);
+
+double
+gsl_spline_eval_deriv(const gsl_spline * spline,
+ double x,
+ gsl_interp_accel * a);
+
+int
+gsl_spline_eval_deriv2_e(const gsl_spline * spline,
+ double x,
+ gsl_interp_accel * a,
+ double * y);
+
+double
+gsl_spline_eval_deriv2(const gsl_spline * spline,
+ double x,
+ gsl_interp_accel * a);
+
+int
+gsl_spline_eval_integ_e(const gsl_spline * spline,
+ double a, double b,
+ gsl_interp_accel * acc,
+ double * y);
+
+double
+gsl_spline_eval_integ(const gsl_spline * spline,
+ double a, double b,
+ gsl_interp_accel * acc);
+
+void
+gsl_spline_free(gsl_spline * spline);
+
+__END_DECLS
+
+#endif /* __GSL_INTERP_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_spline2d.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spline2d.h
new file mode 100644
index 00000000..a3048000
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spline2d.h
@@ -0,0 +1,113 @@
+/* interpolation/gsl_spline2d.h
+ *
+ * Copyright 2012 David Zaslavsky
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SPLINE2D_H__
+#define __GSL_SPLINE2D_H__
+
+#include <gsl/gsl_interp.h>
+#include <gsl/gsl_interp2d.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+
+/*
+ * A 2D interpolation object which stores the arrays defining the function.
+ * In all other respects, this is just like a gsl_interp2d object.
+ */
+typedef struct
+{
+ gsl_interp2d interp_object; /* low-level interpolation object */
+ double * xarr; /* x data array */
+ double * yarr; /* y data array */
+ double * zarr; /* z data array */
+} gsl_spline2d;
+
+gsl_spline2d * gsl_spline2d_alloc(const gsl_interp2d_type * T, size_t xsize, size_t ysize);
+
+int gsl_spline2d_init(gsl_spline2d * interp, const double xa[],
+ const double ya[], const double za[],
+ size_t xsize, size_t ysize);
+
+void gsl_spline2d_free(gsl_spline2d * interp);
+
+double gsl_spline2d_eval(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa, gsl_interp_accel* ya);
+
+int gsl_spline2d_eval_e(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa, gsl_interp_accel* ya,
+ double * z);
+
+double gsl_spline2d_eval_deriv_x(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa, gsl_interp_accel* ya);
+
+int gsl_spline2d_eval_deriv_x_e(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa,
+ gsl_interp_accel* ya, double * z);
+
+double gsl_spline2d_eval_deriv_y(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa,
+ gsl_interp_accel* ya);
+
+int gsl_spline2d_eval_deriv_y_e(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa,
+ gsl_interp_accel* ya, double * z);
+
+double gsl_spline2d_eval_deriv_xx(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa, gsl_interp_accel* ya);
+
+int gsl_spline2d_eval_deriv_xx_e(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa,
+ gsl_interp_accel* ya, double * z);
+
+double gsl_spline2d_eval_deriv_yy(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa, gsl_interp_accel* ya);
+
+int gsl_spline2d_eval_deriv_yy_e(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa,
+ gsl_interp_accel* ya, double * z);
+
+double gsl_spline2d_eval_deriv_xy(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa, gsl_interp_accel* ya);
+
+int gsl_spline2d_eval_deriv_xy_e(const gsl_spline2d * interp, const double x,
+ const double y, gsl_interp_accel* xa,
+ gsl_interp_accel* ya, double * z);
+
+size_t gsl_spline2d_min_size(const gsl_spline2d * interp);
+
+const char * gsl_spline2d_name(const gsl_spline2d * interp);
+
+int gsl_spline2d_set(const gsl_spline2d * interp, double zarr[],
+ const size_t i, const size_t j, const double z);
+double gsl_spline2d_get(const gsl_spline2d * interp, const double zarr[],
+ const size_t i, const size_t j);
+
+__END_DECLS
+
+#endif /* __GSL_SPLINE2D_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_spmatrix.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spmatrix.h
new file mode 100644
index 00000000..741d9e69
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_spmatrix.h
@@ -0,0 +1,150 @@
+/* gsl_spmatrix.h
+ *
+ * Copyright (C) 2012-2014 Patrick Alken
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SPMATRIX_H__
+#define __GSL_SPMATRIX_H__
+
+#include <stdlib.h>
+
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_matrix.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/*
+ * Binary tree data structure for storing sparse matrix elements
+ * in triplet format. This is used for efficiently detecting
+ * duplicates and element retrieval via gsl_spmatrix_get
+ */
+typedef struct
+{
+ void *tree; /* tree structure */
+ void *node_array; /* preallocated array of tree nodes */
+ size_t n; /* number of tree nodes in use (<= nzmax) */
+} gsl_spmatrix_tree;
+
+/*
+ * Triplet format:
+ *
+ * If data[n] = A_{ij}, then:
+ * i = A->i[n]
+ * j = A->p[n]
+ *
+ * Compressed column format:
+ *
+ * If data[n] = A_{ij}, then:
+ * i = A->i[n]
+ * A->p[j] <= n < A->p[j+1]
+ * so that column j is stored in
+ * [ data[p[j]], data[p[j] + 1], ..., data[p[j+1] - 1] ]
+ */
+
+typedef struct
+{
+ size_t size1; /* number of rows */
+ size_t size2; /* number of columns */
+
+ size_t *i; /* row indices of size nzmax */
+ double *data; /* matrix elements of size nzmax */
+
+ /*
+ * p contains the column indices (triplet) or column pointers (compcol)
+ *
+ * triplet: p[n] = column number of element data[n]
+ * comp. col: p[j] = index in data of first non-zero element in column j
+ * comp. row: p[i] = index in data of first non-zero element in row i
+ */
+ size_t *p;
+
+ size_t nzmax; /* maximum number of matrix elements */
+ size_t nz; /* number of non-zero values in matrix */
+
+ gsl_spmatrix_tree *tree_data; /* binary tree for sorting triplet data */
+
+ /*
+ * workspace of size MAX(size1,size2)*MAX(sizeof(double),sizeof(size_t))
+ * used in various routines
+ */
+ void *work;
+
+ size_t sptype; /* sparse storage type */
+} gsl_spmatrix;
+
+#define GSL_SPMATRIX_TRIPLET (0)
+#define GSL_SPMATRIX_CCS (1)
+
+#define GSL_SPMATRIX_ISTRIPLET(m) ((m)->sptype == GSL_SPMATRIX_TRIPLET)
+#define GSL_SPMATRIX_ISCCS(m) ((m)->sptype == GSL_SPMATRIX_CCS)
+
+/*
+ * Prototypes
+ */
+
+gsl_spmatrix *gsl_spmatrix_alloc(const size_t n1, const size_t n2);
+gsl_spmatrix *gsl_spmatrix_alloc_nzmax(const size_t n1, const size_t n2,
+ const size_t nzmax, const size_t flags);
+void gsl_spmatrix_free(gsl_spmatrix *m);
+int gsl_spmatrix_realloc(const size_t nzmax, gsl_spmatrix *m);
+int gsl_spmatrix_set_zero(gsl_spmatrix *m);
+size_t gsl_spmatrix_nnz(const gsl_spmatrix *m);
+int gsl_spmatrix_compare_idx(const size_t ia, const size_t ja,
+ const size_t ib, const size_t jb);
+
+/* spcopy.c */
+int gsl_spmatrix_memcpy(gsl_spmatrix *dest, const gsl_spmatrix *src);
+
+/* spgetset.c */
+double gsl_spmatrix_get(const gsl_spmatrix *m, const size_t i,
+ const size_t j);
+int gsl_spmatrix_set(gsl_spmatrix *m, const size_t i, const size_t j,
+ const double x);
+
+/* spcompress.c */
+gsl_spmatrix *gsl_spmatrix_compcol(const gsl_spmatrix *T);
+void gsl_spmatrix_cumsum(const size_t n, size_t *c);
+
+/* spoper.c */
+int gsl_spmatrix_scale(gsl_spmatrix *m, const double x);
+int gsl_spmatrix_minmax(const gsl_spmatrix *m, double *min_out,
+ double *max_out);
+int gsl_spmatrix_add(gsl_spmatrix *c, const gsl_spmatrix *a,
+ const gsl_spmatrix *b);
+int gsl_spmatrix_d2sp(gsl_spmatrix *S, const gsl_matrix *A);
+int gsl_spmatrix_sp2d(gsl_matrix *A, const gsl_spmatrix *S);
+
+/* spprop.c */
+int gsl_spmatrix_equal(const gsl_spmatrix *a, const gsl_spmatrix *b);
+
+/* spswap.c */
+int gsl_spmatrix_transpose_memcpy(gsl_spmatrix *dest, const gsl_spmatrix *src);
+
+__END_DECLS
+
+#endif /* __GSL_SPMATRIX_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics.h
new file mode 100644
index 00000000..9fb414f2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics.h
@@ -0,0 +1,20 @@
+#ifndef __GSL_STATISTICS_H__
+#define __GSL_STATISTICS_H__
+
+#include <gsl/gsl_statistics_long_double.h>
+#include <gsl/gsl_statistics_double.h>
+#include <gsl/gsl_statistics_float.h>
+
+#include <gsl/gsl_statistics_ulong.h>
+#include <gsl/gsl_statistics_long.h>
+
+#include <gsl/gsl_statistics_uint.h>
+#include <gsl/gsl_statistics_int.h>
+
+#include <gsl/gsl_statistics_ushort.h>
+#include <gsl/gsl_statistics_short.h>
+
+#include <gsl/gsl_statistics_uchar.h>
+#include <gsl/gsl_statistics_char.h>
+
+#endif /* __GSL_STATISTICS_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_char.h
new file mode 100644
index 00000000..ad1eb4f5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_char.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_CHAR_H__
+#define __GSL_STATISTICS_CHAR_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_char_mean (const char data[], const size_t stride, const size_t n);
+double gsl_stats_char_variance (const char data[], const size_t stride, const size_t n);
+double gsl_stats_char_sd (const char data[], const size_t stride, const size_t n);
+double gsl_stats_char_variance_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_char_sd_with_fixed_mean (const char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_char_tss (const char data[], const size_t stride, const size_t n);
+double gsl_stats_char_tss_m (const char data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_char_absdev (const char data[], const size_t stride, const size_t n);
+double gsl_stats_char_skew (const char data[], const size_t stride, const size_t n);
+double gsl_stats_char_kurtosis (const char data[], const size_t stride, const size_t n);
+double gsl_stats_char_lag1_autocorrelation (const char data[], const size_t stride, const size_t n);
+
+double gsl_stats_char_covariance (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n);
+double gsl_stats_char_correlation (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n);
+double gsl_stats_char_spearman (const char data1[], const size_t stride1, const char data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_char_variance_m (const char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_char_sd_m (const char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_char_absdev_m (const char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_char_skew_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_char_kurtosis_m_sd (const char data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_char_lag1_autocorrelation_m (const char data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_char_covariance_m (const char data1[], const size_t stride1,const char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_char_pvariance (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2);
+double gsl_stats_char_ttest (const char data1[], const size_t stride1, const size_t n1, const char data2[], const size_t stride2, const size_t n2);
+
+char gsl_stats_char_max (const char data[], const size_t stride, const size_t n);
+char gsl_stats_char_min (const char data[], const size_t stride, const size_t n);
+void gsl_stats_char_minmax (char * min, char * max, const char data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_char_max_index (const char data[], const size_t stride, const size_t n);
+size_t gsl_stats_char_min_index (const char data[], const size_t stride, const size_t n);
+void gsl_stats_char_minmax_index (size_t * min_index, size_t * max_index, const char data[], const size_t stride, const size_t n);
+
+double gsl_stats_char_median_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_char_quantile_from_sorted_data (const char sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_CHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_double.h
new file mode 100644
index 00000000..43b2956e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_double.h
@@ -0,0 +1,100 @@
+/* statistics/gsl_statistics_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_DOUBLE_H__
+#define __GSL_STATISTICS_DOUBLE_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_mean (const double data[], const size_t stride, const size_t n);
+double gsl_stats_variance (const double data[], const size_t stride, const size_t n);
+double gsl_stats_sd (const double data[], const size_t stride, const size_t n);
+double gsl_stats_variance_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_sd_with_fixed_mean (const double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_tss (const double data[], const size_t stride, const size_t n);
+double gsl_stats_tss_m (const double data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_absdev (const double data[], const size_t stride, const size_t n);
+double gsl_stats_skew (const double data[], const size_t stride, const size_t n);
+double gsl_stats_kurtosis (const double data[], const size_t stride, const size_t n);
+double gsl_stats_lag1_autocorrelation (const double data[], const size_t stride, const size_t n);
+
+double gsl_stats_covariance (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n);
+double gsl_stats_correlation (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n);
+double gsl_stats_spearman (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_variance_m (const double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_sd_m (const double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_absdev_m (const double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_skew_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_kurtosis_m_sd (const double data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_lag1_autocorrelation_m (const double data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_covariance_m (const double data1[], const size_t stride1,const double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+/* DEFINED FOR FLOATING POINT TYPES ONLY */
+
+double gsl_stats_wmean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+double gsl_stats_wvariance (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+double gsl_stats_wsd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+double gsl_stats_wvariance_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_wsd_with_fixed_mean (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_wtss (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+double gsl_stats_wtss_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_wabsdev (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+double gsl_stats_wskew (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+double gsl_stats_wkurtosis (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n);
+
+double gsl_stats_wvariance_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_wsd_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_wabsdev_m (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_wskew_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+double gsl_stats_wkurtosis_m_sd (const double w[], const size_t wstride, const double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+
+/* END OF FLOATING POINT TYPES */
+
+double gsl_stats_pvariance (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2);
+double gsl_stats_ttest (const double data1[], const size_t stride1, const size_t n1, const double data2[], const size_t stride2, const size_t n2);
+
+double gsl_stats_max (const double data[], const size_t stride, const size_t n);
+double gsl_stats_min (const double data[], const size_t stride, const size_t n);
+void gsl_stats_minmax (double * min, double * max, const double data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_max_index (const double data[], const size_t stride, const size_t n);
+size_t gsl_stats_min_index (const double data[], const size_t stride, const size_t n);
+void gsl_stats_minmax_index (size_t * min_index, size_t * max_index, const double data[], const size_t stride, const size_t n);
+
+double gsl_stats_median_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_quantile_from_sorted_data (const double sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_float.h
new file mode 100644
index 00000000..fe7a62d5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_float.h
@@ -0,0 +1,100 @@
+/* statistics/gsl_statistics_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_FLOAT_H__
+#define __GSL_STATISTICS_FLOAT_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_float_mean (const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_variance (const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_sd (const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_variance_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_float_sd_with_fixed_mean (const float data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_float_tss (const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_tss_m (const float data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_float_absdev (const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_skew (const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_kurtosis (const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_lag1_autocorrelation (const float data[], const size_t stride, const size_t n);
+
+double gsl_stats_float_covariance (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n);
+double gsl_stats_float_correlation (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n);
+double gsl_stats_float_spearman (const float data1[], const size_t stride1, const float data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_float_variance_m (const float data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_float_sd_m (const float data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_float_absdev_m (const float data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_float_skew_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_float_kurtosis_m_sd (const float data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_float_lag1_autocorrelation_m (const float data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_float_covariance_m (const float data1[], const size_t stride1,const float data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+/* DEFINED FOR FLOATING POINT TYPES ONLY */
+
+double gsl_stats_float_wmean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_wvariance (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_wsd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_wvariance_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_float_wsd_with_fixed_mean (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_float_wtss (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_wtss_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_float_wabsdev (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_wskew (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+double gsl_stats_float_wkurtosis (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n);
+
+double gsl_stats_float_wvariance_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_float_wsd_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_float_wabsdev_m (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_float_wskew_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+double gsl_stats_float_wkurtosis_m_sd (const float w[], const size_t wstride, const float data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+
+/* END OF FLOATING POINT TYPES */
+
+double gsl_stats_float_pvariance (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2);
+double gsl_stats_float_ttest (const float data1[], const size_t stride1, const size_t n1, const float data2[], const size_t stride2, const size_t n2);
+
+float gsl_stats_float_max (const float data[], const size_t stride, const size_t n);
+float gsl_stats_float_min (const float data[], const size_t stride, const size_t n);
+void gsl_stats_float_minmax (float * min, float * max, const float data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_float_max_index (const float data[], const size_t stride, const size_t n);
+size_t gsl_stats_float_min_index (const float data[], const size_t stride, const size_t n);
+void gsl_stats_float_minmax_index (size_t * min_index, size_t * max_index, const float data[], const size_t stride, const size_t n);
+
+double gsl_stats_float_median_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_float_quantile_from_sorted_data (const float sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_int.h
new file mode 100644
index 00000000..4c683e68
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_int.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_INT_H__
+#define __GSL_STATISTICS_INT_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_int_mean (const int data[], const size_t stride, const size_t n);
+double gsl_stats_int_variance (const int data[], const size_t stride, const size_t n);
+double gsl_stats_int_sd (const int data[], const size_t stride, const size_t n);
+double gsl_stats_int_variance_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_int_sd_with_fixed_mean (const int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_int_tss (const int data[], const size_t stride, const size_t n);
+double gsl_stats_int_tss_m (const int data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_int_absdev (const int data[], const size_t stride, const size_t n);
+double gsl_stats_int_skew (const int data[], const size_t stride, const size_t n);
+double gsl_stats_int_kurtosis (const int data[], const size_t stride, const size_t n);
+double gsl_stats_int_lag1_autocorrelation (const int data[], const size_t stride, const size_t n);
+
+double gsl_stats_int_covariance (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n);
+double gsl_stats_int_correlation (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n);
+double gsl_stats_int_spearman (const int data1[], const size_t stride1, const int data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_int_variance_m (const int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_int_sd_m (const int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_int_absdev_m (const int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_int_skew_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_int_kurtosis_m_sd (const int data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_int_lag1_autocorrelation_m (const int data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_int_covariance_m (const int data1[], const size_t stride1,const int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_int_pvariance (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2);
+double gsl_stats_int_ttest (const int data1[], const size_t stride1, const size_t n1, const int data2[], const size_t stride2, const size_t n2);
+
+int gsl_stats_int_max (const int data[], const size_t stride, const size_t n);
+int gsl_stats_int_min (const int data[], const size_t stride, const size_t n);
+void gsl_stats_int_minmax (int * min, int * max, const int data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_int_max_index (const int data[], const size_t stride, const size_t n);
+size_t gsl_stats_int_min_index (const int data[], const size_t stride, const size_t n);
+void gsl_stats_int_minmax_index (size_t * min_index, size_t * max_index, const int data[], const size_t stride, const size_t n);
+
+double gsl_stats_int_median_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_int_quantile_from_sorted_data (const int sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_INT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long.h
new file mode 100644
index 00000000..95813e8e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_LONG_H__
+#define __GSL_STATISTICS_LONG_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_long_mean (const long data[], const size_t stride, const size_t n);
+double gsl_stats_long_variance (const long data[], const size_t stride, const size_t n);
+double gsl_stats_long_sd (const long data[], const size_t stride, const size_t n);
+double gsl_stats_long_variance_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_sd_with_fixed_mean (const long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_tss (const long data[], const size_t stride, const size_t n);
+double gsl_stats_long_tss_m (const long data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_long_absdev (const long data[], const size_t stride, const size_t n);
+double gsl_stats_long_skew (const long data[], const size_t stride, const size_t n);
+double gsl_stats_long_kurtosis (const long data[], const size_t stride, const size_t n);
+double gsl_stats_long_lag1_autocorrelation (const long data[], const size_t stride, const size_t n);
+
+double gsl_stats_long_covariance (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n);
+double gsl_stats_long_correlation (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n);
+double gsl_stats_long_spearman (const long data1[], const size_t stride1, const long data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_long_variance_m (const long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_sd_m (const long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_absdev_m (const long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_skew_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_long_kurtosis_m_sd (const long data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_long_lag1_autocorrelation_m (const long data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_long_covariance_m (const long data1[], const size_t stride1,const long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_long_pvariance (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2);
+double gsl_stats_long_ttest (const long data1[], const size_t stride1, const size_t n1, const long data2[], const size_t stride2, const size_t n2);
+
+long gsl_stats_long_max (const long data[], const size_t stride, const size_t n);
+long gsl_stats_long_min (const long data[], const size_t stride, const size_t n);
+void gsl_stats_long_minmax (long * min, long * max, const long data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_long_max_index (const long data[], const size_t stride, const size_t n);
+size_t gsl_stats_long_min_index (const long data[], const size_t stride, const size_t n);
+void gsl_stats_long_minmax_index (size_t * min_index, size_t * max_index, const long data[], const size_t stride, const size_t n);
+
+double gsl_stats_long_median_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_long_quantile_from_sorted_data (const long sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_LONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long_double.h
new file mode 100644
index 00000000..e580d58a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_long_double.h
@@ -0,0 +1,100 @@
+/* statistics/gsl_statistics_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_LONG_DOUBLE_H__
+#define __GSL_STATISTICS_LONG_DOUBLE_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_long_double_mean (const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_variance (const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_sd (const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_variance_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_double_sd_with_fixed_mean (const long double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_double_tss (const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_tss_m (const long double data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_long_double_absdev (const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_skew (const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_kurtosis (const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_lag1_autocorrelation (const long double data[], const size_t stride, const size_t n);
+
+double gsl_stats_long_double_covariance (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n);
+double gsl_stats_long_double_correlation (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n);
+double gsl_stats_long_double_spearman (const long double data1[], const size_t stride1, const long double data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_long_double_variance_m (const long double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_double_sd_m (const long double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_double_absdev_m (const long double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_double_skew_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_long_double_kurtosis_m_sd (const long double data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_long_double_lag1_autocorrelation_m (const long double data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_long_double_covariance_m (const long double data1[], const size_t stride1,const long double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+/* DEFINED FOR FLOATING POINT TYPES ONLY */
+
+double gsl_stats_long_double_wmean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_wvariance (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_wsd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_wvariance_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_double_wsd_with_fixed_mean (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_long_double_wtss (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_wtss_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_long_double_wabsdev (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_wskew (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+double gsl_stats_long_double_wkurtosis (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n);
+
+double gsl_stats_long_double_wvariance_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_long_double_wsd_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_long_double_wabsdev_m (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean);
+double gsl_stats_long_double_wskew_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+double gsl_stats_long_double_wkurtosis_m_sd (const long double w[], const size_t wstride, const long double data[], const size_t stride, const size_t n, const double wmean, const double wsd);
+
+/* END OF FLOATING POINT TYPES */
+
+double gsl_stats_long_double_pvariance (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2);
+double gsl_stats_long_double_ttest (const long double data1[], const size_t stride1, const size_t n1, const long double data2[], const size_t stride2, const size_t n2);
+
+long double gsl_stats_long_double_max (const long double data[], const size_t stride, const size_t n);
+long double gsl_stats_long_double_min (const long double data[], const size_t stride, const size_t n);
+void gsl_stats_long_double_minmax (long double * min, long double * max, const long double data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_long_double_max_index (const long double data[], const size_t stride, const size_t n);
+size_t gsl_stats_long_double_min_index (const long double data[], const size_t stride, const size_t n);
+void gsl_stats_long_double_minmax_index (size_t * min_index, size_t * max_index, const long double data[], const size_t stride, const size_t n);
+
+double gsl_stats_long_double_median_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_long_double_quantile_from_sorted_data (const long double sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_short.h
new file mode 100644
index 00000000..60b54b3a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_short.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_SHORT_H__
+#define __GSL_STATISTICS_SHORT_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_short_mean (const short data[], const size_t stride, const size_t n);
+double gsl_stats_short_variance (const short data[], const size_t stride, const size_t n);
+double gsl_stats_short_sd (const short data[], const size_t stride, const size_t n);
+double gsl_stats_short_variance_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_short_sd_with_fixed_mean (const short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_short_tss (const short data[], const size_t stride, const size_t n);
+double gsl_stats_short_tss_m (const short data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_short_absdev (const short data[], const size_t stride, const size_t n);
+double gsl_stats_short_skew (const short data[], const size_t stride, const size_t n);
+double gsl_stats_short_kurtosis (const short data[], const size_t stride, const size_t n);
+double gsl_stats_short_lag1_autocorrelation (const short data[], const size_t stride, const size_t n);
+
+double gsl_stats_short_covariance (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n);
+double gsl_stats_short_correlation (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n);
+double gsl_stats_short_spearman (const short data1[], const size_t stride1, const short data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_short_variance_m (const short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_short_sd_m (const short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_short_absdev_m (const short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_short_skew_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_short_kurtosis_m_sd (const short data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_short_lag1_autocorrelation_m (const short data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_short_covariance_m (const short data1[], const size_t stride1,const short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_short_pvariance (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2);
+double gsl_stats_short_ttest (const short data1[], const size_t stride1, const size_t n1, const short data2[], const size_t stride2, const size_t n2);
+
+short gsl_stats_short_max (const short data[], const size_t stride, const size_t n);
+short gsl_stats_short_min (const short data[], const size_t stride, const size_t n);
+void gsl_stats_short_minmax (short * min, short * max, const short data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_short_max_index (const short data[], const size_t stride, const size_t n);
+size_t gsl_stats_short_min_index (const short data[], const size_t stride, const size_t n);
+void gsl_stats_short_minmax_index (size_t * min_index, size_t * max_index, const short data[], const size_t stride, const size_t n);
+
+double gsl_stats_short_median_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_short_quantile_from_sorted_data (const short sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_SHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uchar.h
new file mode 100644
index 00000000..d20d836e
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uchar.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_UCHAR_H__
+#define __GSL_STATISTICS_UCHAR_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_uchar_mean (const unsigned char data[], const size_t stride, const size_t n);
+double gsl_stats_uchar_variance (const unsigned char data[], const size_t stride, const size_t n);
+double gsl_stats_uchar_sd (const unsigned char data[], const size_t stride, const size_t n);
+double gsl_stats_uchar_variance_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uchar_sd_with_fixed_mean (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uchar_tss (const unsigned char data[], const size_t stride, const size_t n);
+double gsl_stats_uchar_tss_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_uchar_absdev (const unsigned char data[], const size_t stride, const size_t n);
+double gsl_stats_uchar_skew (const unsigned char data[], const size_t stride, const size_t n);
+double gsl_stats_uchar_kurtosis (const unsigned char data[], const size_t stride, const size_t n);
+double gsl_stats_uchar_lag1_autocorrelation (const unsigned char data[], const size_t stride, const size_t n);
+
+double gsl_stats_uchar_covariance (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n);
+double gsl_stats_uchar_correlation (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n);
+double gsl_stats_uchar_spearman (const unsigned char data1[], const size_t stride1, const unsigned char data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_uchar_variance_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uchar_sd_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uchar_absdev_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uchar_skew_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_uchar_kurtosis_m_sd (const unsigned char data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_uchar_lag1_autocorrelation_m (const unsigned char data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_uchar_covariance_m (const unsigned char data1[], const size_t stride1,const unsigned char data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_uchar_pvariance (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2);
+double gsl_stats_uchar_ttest (const unsigned char data1[], const size_t stride1, const size_t n1, const unsigned char data2[], const size_t stride2, const size_t n2);
+
+unsigned char gsl_stats_uchar_max (const unsigned char data[], const size_t stride, const size_t n);
+unsigned char gsl_stats_uchar_min (const unsigned char data[], const size_t stride, const size_t n);
+void gsl_stats_uchar_minmax (unsigned char * min, unsigned char * max, const unsigned char data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_uchar_max_index (const unsigned char data[], const size_t stride, const size_t n);
+size_t gsl_stats_uchar_min_index (const unsigned char data[], const size_t stride, const size_t n);
+void gsl_stats_uchar_minmax_index (size_t * min_index, size_t * max_index, const unsigned char data[], const size_t stride, const size_t n);
+
+double gsl_stats_uchar_median_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_uchar_quantile_from_sorted_data (const unsigned char sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_UCHAR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uint.h
new file mode 100644
index 00000000..02001e9a
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_uint.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_UINT_H__
+#define __GSL_STATISTICS_UINT_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_uint_mean (const unsigned int data[], const size_t stride, const size_t n);
+double gsl_stats_uint_variance (const unsigned int data[], const size_t stride, const size_t n);
+double gsl_stats_uint_sd (const unsigned int data[], const size_t stride, const size_t n);
+double gsl_stats_uint_variance_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uint_sd_with_fixed_mean (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uint_tss (const unsigned int data[], const size_t stride, const size_t n);
+double gsl_stats_uint_tss_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_uint_absdev (const unsigned int data[], const size_t stride, const size_t n);
+double gsl_stats_uint_skew (const unsigned int data[], const size_t stride, const size_t n);
+double gsl_stats_uint_kurtosis (const unsigned int data[], const size_t stride, const size_t n);
+double gsl_stats_uint_lag1_autocorrelation (const unsigned int data[], const size_t stride, const size_t n);
+
+double gsl_stats_uint_covariance (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n);
+double gsl_stats_uint_correlation (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n);
+double gsl_stats_uint_spearman (const unsigned int data1[], const size_t stride1, const unsigned int data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_uint_variance_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uint_sd_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uint_absdev_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_uint_skew_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_uint_kurtosis_m_sd (const unsigned int data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_uint_lag1_autocorrelation_m (const unsigned int data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_uint_covariance_m (const unsigned int data1[], const size_t stride1,const unsigned int data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_uint_pvariance (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2);
+double gsl_stats_uint_ttest (const unsigned int data1[], const size_t stride1, const size_t n1, const unsigned int data2[], const size_t stride2, const size_t n2);
+
+unsigned int gsl_stats_uint_max (const unsigned int data[], const size_t stride, const size_t n);
+unsigned int gsl_stats_uint_min (const unsigned int data[], const size_t stride, const size_t n);
+void gsl_stats_uint_minmax (unsigned int * min, unsigned int * max, const unsigned int data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_uint_max_index (const unsigned int data[], const size_t stride, const size_t n);
+size_t gsl_stats_uint_min_index (const unsigned int data[], const size_t stride, const size_t n);
+void gsl_stats_uint_minmax_index (size_t * min_index, size_t * max_index, const unsigned int data[], const size_t stride, const size_t n);
+
+double gsl_stats_uint_median_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_uint_quantile_from_sorted_data (const unsigned int sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_UINT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ulong.h
new file mode 100644
index 00000000..e6c970dd
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ulong.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_ULONG_H__
+#define __GSL_STATISTICS_ULONG_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_ulong_mean (const unsigned long data[], const size_t stride, const size_t n);
+double gsl_stats_ulong_variance (const unsigned long data[], const size_t stride, const size_t n);
+double gsl_stats_ulong_sd (const unsigned long data[], const size_t stride, const size_t n);
+double gsl_stats_ulong_variance_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ulong_sd_with_fixed_mean (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ulong_tss (const unsigned long data[], const size_t stride, const size_t n);
+double gsl_stats_ulong_tss_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_ulong_absdev (const unsigned long data[], const size_t stride, const size_t n);
+double gsl_stats_ulong_skew (const unsigned long data[], const size_t stride, const size_t n);
+double gsl_stats_ulong_kurtosis (const unsigned long data[], const size_t stride, const size_t n);
+double gsl_stats_ulong_lag1_autocorrelation (const unsigned long data[], const size_t stride, const size_t n);
+
+double gsl_stats_ulong_covariance (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n);
+double gsl_stats_ulong_correlation (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n);
+double gsl_stats_ulong_spearman (const unsigned long data1[], const size_t stride1, const unsigned long data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_ulong_variance_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ulong_sd_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ulong_absdev_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ulong_skew_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_ulong_kurtosis_m_sd (const unsigned long data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_ulong_lag1_autocorrelation_m (const unsigned long data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_ulong_covariance_m (const unsigned long data1[], const size_t stride1,const unsigned long data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_ulong_pvariance (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2);
+double gsl_stats_ulong_ttest (const unsigned long data1[], const size_t stride1, const size_t n1, const unsigned long data2[], const size_t stride2, const size_t n2);
+
+unsigned long gsl_stats_ulong_max (const unsigned long data[], const size_t stride, const size_t n);
+unsigned long gsl_stats_ulong_min (const unsigned long data[], const size_t stride, const size_t n);
+void gsl_stats_ulong_minmax (unsigned long * min, unsigned long * max, const unsigned long data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_ulong_max_index (const unsigned long data[], const size_t stride, const size_t n);
+size_t gsl_stats_ulong_min_index (const unsigned long data[], const size_t stride, const size_t n);
+void gsl_stats_ulong_minmax_index (size_t * min_index, size_t * max_index, const unsigned long data[], const size_t stride, const size_t n);
+
+double gsl_stats_ulong_median_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_ulong_quantile_from_sorted_data (const unsigned long sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_ULONG_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ushort.h
new file mode 100644
index 00000000..73cd6de6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_statistics_ushort.h
@@ -0,0 +1,80 @@
+/* statistics/gsl_statistics_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_STATISTICS_USHORT_H__
+#define __GSL_STATISTICS_USHORT_H__
+
+#include <stddef.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_stats_ushort_mean (const unsigned short data[], const size_t stride, const size_t n);
+double gsl_stats_ushort_variance (const unsigned short data[], const size_t stride, const size_t n);
+double gsl_stats_ushort_sd (const unsigned short data[], const size_t stride, const size_t n);
+double gsl_stats_ushort_variance_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ushort_sd_with_fixed_mean (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ushort_tss (const unsigned short data[], const size_t stride, const size_t n);
+double gsl_stats_ushort_tss_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_ushort_absdev (const unsigned short data[], const size_t stride, const size_t n);
+double gsl_stats_ushort_skew (const unsigned short data[], const size_t stride, const size_t n);
+double gsl_stats_ushort_kurtosis (const unsigned short data[], const size_t stride, const size_t n);
+double gsl_stats_ushort_lag1_autocorrelation (const unsigned short data[], const size_t stride, const size_t n);
+
+double gsl_stats_ushort_covariance (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n);
+double gsl_stats_ushort_correlation (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n);
+double gsl_stats_ushort_spearman (const unsigned short data1[], const size_t stride1, const unsigned short data2[], const size_t stride2, const size_t n, double work[]);
+
+double gsl_stats_ushort_variance_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ushort_sd_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ushort_absdev_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+double gsl_stats_ushort_skew_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_ushort_kurtosis_m_sd (const unsigned short data[], const size_t stride, const size_t n, const double mean, const double sd);
+double gsl_stats_ushort_lag1_autocorrelation_m (const unsigned short data[], const size_t stride, const size_t n, const double mean);
+
+double gsl_stats_ushort_covariance_m (const unsigned short data1[], const size_t stride1,const unsigned short data2[], const size_t stride2, const size_t n, const double mean1, const double mean2);
+
+
+double gsl_stats_ushort_pvariance (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2);
+double gsl_stats_ushort_ttest (const unsigned short data1[], const size_t stride1, const size_t n1, const unsigned short data2[], const size_t stride2, const size_t n2);
+
+unsigned short gsl_stats_ushort_max (const unsigned short data[], const size_t stride, const size_t n);
+unsigned short gsl_stats_ushort_min (const unsigned short data[], const size_t stride, const size_t n);
+void gsl_stats_ushort_minmax (unsigned short * min, unsigned short * max, const unsigned short data[], const size_t stride, const size_t n);
+
+size_t gsl_stats_ushort_max_index (const unsigned short data[], const size_t stride, const size_t n);
+size_t gsl_stats_ushort_min_index (const unsigned short data[], const size_t stride, const size_t n);
+void gsl_stats_ushort_minmax_index (size_t * min_index, size_t * max_index, const unsigned short data[], const size_t stride, const size_t n);
+
+double gsl_stats_ushort_median_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n) ;
+double gsl_stats_ushort_quantile_from_sorted_data (const unsigned short sorted_data[], const size_t stride, const size_t n, const double f) ;
+
+__END_DECLS
+
+#endif /* __GSL_STATISTICS_USHORT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sum.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sum.h
new file mode 100644
index 00000000..d9c4da81
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sum.h
@@ -0,0 +1,162 @@
+/* sum/gsl_sum.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+/* Author: G. Jungman */
+
+
+#ifndef __GSL_SUM_H__
+#define __GSL_SUM_H__
+
+#include <stdlib.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+/* Workspace for Levin U Transform with error estimation,
+ *
+ * size = number of terms the workspace can handle
+ * sum_plain = simple sum of series
+ * q_num = backward diagonal of numerator; length = size
+ * q_den = backward diagonal of denominator; length = size
+ * dq_num = table of numerator derivatives; length = size**2
+ * dq_den = table of denominator derivatives; length = size**2
+ * dsum = derivative of sum wrt term i; length = size
+ */
+
+typedef struct
+{
+ size_t size;
+ size_t i; /* position in array */
+ size_t terms_used; /* number of calls */
+ double sum_plain;
+ double *q_num;
+ double *q_den;
+ double *dq_num;
+ double *dq_den;
+ double *dsum;
+}
+gsl_sum_levin_u_workspace;
+
+gsl_sum_levin_u_workspace *gsl_sum_levin_u_alloc (size_t n);
+void gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * w);
+
+/* Basic Levin-u acceleration method.
+ *
+ * array = array of series elements
+ * n = size of array
+ * sum_accel = result of summation acceleration
+ * err = estimated error
+ *
+ * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602]
+ */
+
+int gsl_sum_levin_u_accel (const double *array,
+ const size_t n,
+ gsl_sum_levin_u_workspace * w,
+ double *sum_accel, double *abserr);
+
+/* Basic Levin-u acceleration method with constraints on the terms
+ * used,
+ *
+ * array = array of series elements
+ * n = size of array
+ * min_terms = minimum number of terms to sum
+ * max_terms = maximum number of terms to sum
+ * sum_accel = result of summation acceleration
+ * err = estimated error
+ *
+ * See [Fessler et al., ACM TOMS 9, 346 (1983) and TOMS-602]
+ */
+
+int gsl_sum_levin_u_minmax (const double *array,
+ const size_t n,
+ const size_t min_terms,
+ const size_t max_terms,
+ gsl_sum_levin_u_workspace * w,
+ double *sum_accel, double *abserr);
+
+/* Basic Levin-u step w/o reference to the array of terms.
+ * We only need to specify the value of the current term
+ * to execute the step. See TOMS-745.
+ *
+ * sum = t0 + ... + t_{n-1} + term; term = t_{n}
+ *
+ * term = value of the series term to be added
+ * n = position of term in series (starting from 0)
+ * sum_accel = result of summation acceleration
+ * sum_plain = simple sum of series
+ */
+
+int
+gsl_sum_levin_u_step (const double term,
+ const size_t n,
+ const size_t nmax,
+ gsl_sum_levin_u_workspace * w,
+ double *sum_accel);
+
+/* The following functions perform the same calculation without
+ estimating the errors. They require O(N) storage instead of O(N^2).
+ This may be useful for summing many similar series where the size
+ of the error has already been estimated reliably and is not
+ expected to change. */
+
+typedef struct
+{
+ size_t size;
+ size_t i; /* position in array */
+ size_t terms_used; /* number of calls */
+ double sum_plain;
+ double *q_num;
+ double *q_den;
+ double *dsum;
+}
+gsl_sum_levin_utrunc_workspace;
+
+gsl_sum_levin_utrunc_workspace *gsl_sum_levin_utrunc_alloc (size_t n);
+void gsl_sum_levin_utrunc_free (gsl_sum_levin_utrunc_workspace * w);
+
+int gsl_sum_levin_utrunc_accel (const double *array,
+ const size_t n,
+ gsl_sum_levin_utrunc_workspace * w,
+ double *sum_accel, double *abserr_trunc);
+
+int gsl_sum_levin_utrunc_minmax (const double *array,
+ const size_t n,
+ const size_t min_terms,
+ const size_t max_terms,
+ gsl_sum_levin_utrunc_workspace * w,
+ double *sum_accel, double *abserr_trunc);
+
+int gsl_sum_levin_utrunc_step (const double term,
+ const size_t n,
+ gsl_sum_levin_utrunc_workspace * w,
+ double *sum_accel);
+
+__END_DECLS
+
+#endif /* __GSL_SUM_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_sys.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sys.h
new file mode 100644
index 00000000..25e13486
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_sys.h
@@ -0,0 +1,63 @@
+/* sys/gsl_sys.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_SYS_H__
+#define __GSL_SYS_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+double gsl_log1p (const double x);
+double gsl_expm1 (const double x);
+double gsl_hypot (const double x, const double y);
+double gsl_hypot3 (const double x, const double y, const double z);
+double gsl_acosh (const double x);
+double gsl_asinh (const double x);
+double gsl_atanh (const double x);
+
+int gsl_isnan (const double x);
+int gsl_isinf (const double x);
+int gsl_finite (const double x);
+
+double gsl_nan (void);
+double gsl_posinf (void);
+double gsl_neginf (void);
+double gsl_fdiv (const double x, const double y);
+
+double gsl_coerce_double (const double x);
+float gsl_coerce_float (const float x);
+long double gsl_coerce_long_double (const long double x);
+
+double gsl_ldexp(const double x, const int e);
+double gsl_frexp(const double x, int * e);
+
+int gsl_fcmp (const double x1, const double x2, const double epsilon);
+
+__END_DECLS
+
+#endif /* __GSL_SYS_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_test.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_test.h
new file mode 100644
index 00000000..bb86896c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_test.h
@@ -0,0 +1,66 @@
+/* err/gsl_test.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_TEST_H__
+#define __GSL_TEST_H__
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+void
+ gsl_test (int status, const char *test_description, ...);
+
+void
+gsl_test_rel (double result, double expected, double relative_error,
+ const char *test_description, ...) ;
+
+void
+gsl_test_abs (double result, double expected, double absolute_error,
+ const char *test_description, ...) ;
+
+void
+gsl_test_factor (double result, double expected, double factor,
+ const char *test_description, ...) ;
+
+void
+gsl_test_int (int result, int expected, const char *test_description, ...) ;
+
+void
+gsl_test_str (const char * result, const char * expected,
+ const char *test_description, ...) ;
+
+void
+ gsl_test_verbose (int verbose) ;
+
+int
+ gsl_test_summary (void) ;
+
+
+__END_DECLS
+
+#endif /* __GSL_TEST_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_types.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_types.h
new file mode 100644
index 00000000..0330f551
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_types.h
@@ -0,0 +1,41 @@
+/* gsl_types.h
+ *
+ * Copyright (C) 2001, 2007 Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_TYPES_H__
+#define __GSL_TYPES_H__
+
+#ifndef GSL_VAR
+
+#ifdef WIN32
+# ifdef GSL_DLL
+# ifdef DLL_EXPORT
+# define GSL_VAR extern __declspec(dllexport)
+# else
+# define GSL_VAR extern __declspec(dllimport)
+# endif
+# else
+# define GSL_VAR extern
+# endif
+#else
+# define GSL_VAR extern
+#endif
+
+#endif
+
+#endif /* __GSL_TYPES_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector.h
new file mode 100644
index 00000000..cf762e42
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector.h
@@ -0,0 +1,25 @@
+#ifndef __GSL_VECTOR_H__
+#define __GSL_VECTOR_H__
+
+#include <gsl/gsl_vector_complex_long_double.h>
+#include <gsl/gsl_vector_complex_double.h>
+#include <gsl/gsl_vector_complex_float.h>
+
+#include <gsl/gsl_vector_long_double.h>
+#include <gsl/gsl_vector_double.h>
+#include <gsl/gsl_vector_float.h>
+
+#include <gsl/gsl_vector_ulong.h>
+#include <gsl/gsl_vector_long.h>
+
+#include <gsl/gsl_vector_uint.h>
+#include <gsl/gsl_vector_int.h>
+
+#include <gsl/gsl_vector_ushort.h>
+#include <gsl/gsl_vector_short.h>
+
+#include <gsl/gsl_vector_uchar.h>
+#include <gsl/gsl_vector_char.h>
+
+
+#endif /* __GSL_VECTOR_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_char.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_char.h
new file mode 100644
index 00000000..ab1107de
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_char.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_char.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_CHAR_H__
+#define __GSL_VECTOR_CHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_char.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ char *data;
+ gsl_block_char *block;
+ int owner;
+}
+gsl_vector_char;
+
+typedef struct
+{
+ gsl_vector_char vector;
+} _gsl_vector_char_view;
+
+typedef _gsl_vector_char_view gsl_vector_char_view;
+
+typedef struct
+{
+ gsl_vector_char vector;
+} _gsl_vector_char_const_view;
+
+typedef const _gsl_vector_char_const_view gsl_vector_char_const_view;
+
+
+/* Allocation */
+
+gsl_vector_char *gsl_vector_char_alloc (const size_t n);
+gsl_vector_char *gsl_vector_char_calloc (const size_t n);
+
+gsl_vector_char *gsl_vector_char_alloc_from_block (gsl_block_char * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_char *gsl_vector_char_alloc_from_vector (gsl_vector_char * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_char_free (gsl_vector_char * v);
+
+/* Views */
+
+_gsl_vector_char_view
+gsl_vector_char_view_array (char *v, size_t n);
+
+_gsl_vector_char_view
+gsl_vector_char_view_array_with_stride (char *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_char_const_view
+gsl_vector_char_const_view_array (const char *v, size_t n);
+
+_gsl_vector_char_const_view
+gsl_vector_char_const_view_array_with_stride (const char *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_char_view
+gsl_vector_char_subvector (gsl_vector_char *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_char_view
+gsl_vector_char_subvector_with_stride (gsl_vector_char *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_char_const_view
+gsl_vector_char_const_subvector (const gsl_vector_char *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_char_const_view
+gsl_vector_char_const_subvector_with_stride (const gsl_vector_char *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_char_set_zero (gsl_vector_char * v);
+void gsl_vector_char_set_all (gsl_vector_char * v, char x);
+int gsl_vector_char_set_basis (gsl_vector_char * v, size_t i);
+
+int gsl_vector_char_fread (FILE * stream, gsl_vector_char * v);
+int gsl_vector_char_fwrite (FILE * stream, const gsl_vector_char * v);
+int gsl_vector_char_fscanf (FILE * stream, gsl_vector_char * v);
+int gsl_vector_char_fprintf (FILE * stream, const gsl_vector_char * v,
+ const char *format);
+
+int gsl_vector_char_memcpy (gsl_vector_char * dest, const gsl_vector_char * src);
+
+int gsl_vector_char_reverse (gsl_vector_char * v);
+
+int gsl_vector_char_swap (gsl_vector_char * v, gsl_vector_char * w);
+int gsl_vector_char_swap_elements (gsl_vector_char * v, const size_t i, const size_t j);
+
+char gsl_vector_char_max (const gsl_vector_char * v);
+char gsl_vector_char_min (const gsl_vector_char * v);
+void gsl_vector_char_minmax (const gsl_vector_char * v, char * min_out, char * max_out);
+
+size_t gsl_vector_char_max_index (const gsl_vector_char * v);
+size_t gsl_vector_char_min_index (const gsl_vector_char * v);
+void gsl_vector_char_minmax_index (const gsl_vector_char * v, size_t * imin, size_t * imax);
+
+int gsl_vector_char_add (gsl_vector_char * a, const gsl_vector_char * b);
+int gsl_vector_char_sub (gsl_vector_char * a, const gsl_vector_char * b);
+int gsl_vector_char_mul (gsl_vector_char * a, const gsl_vector_char * b);
+int gsl_vector_char_div (gsl_vector_char * a, const gsl_vector_char * b);
+int gsl_vector_char_scale (gsl_vector_char * a, const double x);
+int gsl_vector_char_add_constant (gsl_vector_char * a, const double x);
+
+int gsl_vector_char_equal (const gsl_vector_char * u,
+ const gsl_vector_char * v);
+
+int gsl_vector_char_isnull (const gsl_vector_char * v);
+int gsl_vector_char_ispos (const gsl_vector_char * v);
+int gsl_vector_char_isneg (const gsl_vector_char * v);
+int gsl_vector_char_isnonneg (const gsl_vector_char * v);
+
+INLINE_DECL char gsl_vector_char_get (const gsl_vector_char * v, const size_t i);
+INLINE_DECL void gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x);
+INLINE_DECL char * gsl_vector_char_ptr (gsl_vector_char * v, const size_t i);
+INLINE_DECL const char * gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+char
+gsl_vector_char_get (const gsl_vector_char * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+char *
+gsl_vector_char_ptr (gsl_vector_char * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (char *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const char *
+gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const char *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_CHAR_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex.h
new file mode 100644
index 00000000..e56d6a61
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex.h
@@ -0,0 +1,17 @@
+#ifndef __GSL_VECTOR_COMPLEX_H__
+#define __GSL_VECTOR_COMPLEX_H__
+
+#define GSL_VECTOR_REAL(z, i) ((z)->data[2*(i)*(z)->stride])
+#define GSL_VECTOR_IMAG(z, i) ((z)->data[2*(i)*(z)->stride + 1])
+
+#if GSL_RANGE_CHECK
+#define GSL_VECTOR_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i))))
+#else
+#define GSL_VECTOR_COMPLEX(zv, i) (*GSL_COMPLEX_AT((zv),(i)))
+#endif
+
+#define GSL_COMPLEX_AT(zv,i) ((gsl_complex*)&((zv)->data[2*(i)*(zv)->stride]))
+#define GSL_COMPLEX_FLOAT_AT(zv,i) ((gsl_complex_float*)&((zv)->data[2*(i)*(zv)->stride]))
+#define GSL_COMPLEX_LONG_DOUBLE_AT(zv,i) ((gsl_complex_long_double*)&((zv)->data[2*(i)*(zv)->stride]))
+
+#endif /* __GSL_VECTOR_COMPLEX_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_double.h
new file mode 100644
index 00000000..2e536176
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_double.h
@@ -0,0 +1,251 @@
+/* vector/gsl_vector_complex_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_COMPLEX_DOUBLE_H__
+#define __GSL_VECTOR_COMPLEX_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_double.h>
+#include <gsl/gsl_vector_complex.h>
+#include <gsl/gsl_block_complex_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ double *data;
+ gsl_block_complex *block;
+ int owner;
+} gsl_vector_complex;
+
+typedef struct
+{
+ gsl_vector_complex vector;
+} _gsl_vector_complex_view;
+
+typedef _gsl_vector_complex_view gsl_vector_complex_view;
+
+typedef struct
+{
+ gsl_vector_complex vector;
+} _gsl_vector_complex_const_view;
+
+typedef const _gsl_vector_complex_const_view gsl_vector_complex_const_view;
+
+/* Allocation */
+
+gsl_vector_complex *gsl_vector_complex_alloc (const size_t n);
+gsl_vector_complex *gsl_vector_complex_calloc (const size_t n);
+
+gsl_vector_complex *
+gsl_vector_complex_alloc_from_block (gsl_block_complex * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_complex *
+gsl_vector_complex_alloc_from_vector (gsl_vector_complex * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_complex_free (gsl_vector_complex * v);
+
+/* Views */
+
+_gsl_vector_complex_view
+gsl_vector_complex_view_array (double *base,
+ size_t n);
+
+_gsl_vector_complex_view
+gsl_vector_complex_view_array_with_stride (double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_const_view
+gsl_vector_complex_const_view_array (const double *base,
+ size_t n);
+
+_gsl_vector_complex_const_view
+gsl_vector_complex_const_view_array_with_stride (const double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_view
+gsl_vector_complex_subvector (gsl_vector_complex *base,
+ size_t i,
+ size_t n);
+
+
+_gsl_vector_complex_view
+gsl_vector_complex_subvector_with_stride (gsl_vector_complex *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_const_view
+gsl_vector_complex_const_subvector (const gsl_vector_complex *base,
+ size_t i,
+ size_t n);
+
+
+_gsl_vector_complex_const_view
+gsl_vector_complex_const_subvector_with_stride (const gsl_vector_complex *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_view
+gsl_vector_complex_real (gsl_vector_complex *v);
+
+_gsl_vector_view
+gsl_vector_complex_imag (gsl_vector_complex *v);
+
+_gsl_vector_const_view
+gsl_vector_complex_const_real (const gsl_vector_complex *v);
+
+_gsl_vector_const_view
+gsl_vector_complex_const_imag (const gsl_vector_complex *v);
+
+
+/* Operations */
+
+void gsl_vector_complex_set_zero (gsl_vector_complex * v);
+void gsl_vector_complex_set_all (gsl_vector_complex * v,
+ gsl_complex z);
+int gsl_vector_complex_set_basis (gsl_vector_complex * v, size_t i);
+
+int gsl_vector_complex_fread (FILE * stream,
+ gsl_vector_complex * v);
+int gsl_vector_complex_fwrite (FILE * stream,
+ const gsl_vector_complex * v);
+int gsl_vector_complex_fscanf (FILE * stream,
+ gsl_vector_complex * v);
+int gsl_vector_complex_fprintf (FILE * stream,
+ const gsl_vector_complex * v,
+ const char *format);
+
+int gsl_vector_complex_memcpy (gsl_vector_complex * dest, const gsl_vector_complex * src);
+
+int gsl_vector_complex_reverse (gsl_vector_complex * v);
+
+int gsl_vector_complex_swap (gsl_vector_complex * v, gsl_vector_complex * w);
+int gsl_vector_complex_swap_elements (gsl_vector_complex * v, const size_t i, const size_t j);
+
+int gsl_vector_complex_equal (const gsl_vector_complex * u,
+ const gsl_vector_complex * v);
+
+int gsl_vector_complex_isnull (const gsl_vector_complex * v);
+int gsl_vector_complex_ispos (const gsl_vector_complex * v);
+int gsl_vector_complex_isneg (const gsl_vector_complex * v);
+int gsl_vector_complex_isnonneg (const gsl_vector_complex * v);
+
+int gsl_vector_complex_add (gsl_vector_complex * a, const gsl_vector_complex * b);
+int gsl_vector_complex_sub (gsl_vector_complex * a, const gsl_vector_complex * b);
+int gsl_vector_complex_mul (gsl_vector_complex * a, const gsl_vector_complex * b);
+int gsl_vector_complex_div (gsl_vector_complex * a, const gsl_vector_complex * b);
+int gsl_vector_complex_scale (gsl_vector_complex * a, const gsl_complex x);
+int gsl_vector_complex_add_constant (gsl_vector_complex * a, const gsl_complex x);
+
+INLINE_DECL gsl_complex gsl_vector_complex_get (const gsl_vector_complex * v, const size_t i);
+INLINE_DECL void gsl_vector_complex_set (gsl_vector_complex * v, const size_t i, gsl_complex z);
+INLINE_DECL gsl_complex *gsl_vector_complex_ptr (gsl_vector_complex * v, const size_t i);
+INLINE_DECL const gsl_complex *gsl_vector_complex_const_ptr (const gsl_vector_complex * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+gsl_complex
+gsl_vector_complex_get (const gsl_vector_complex * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ gsl_complex zero = {{0, 0}};
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
+ }
+#endif
+ return *GSL_COMPLEX_AT (v, i);
+}
+
+INLINE_FUN
+void
+gsl_vector_complex_set (gsl_vector_complex * v,
+ const size_t i, gsl_complex z)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ *GSL_COMPLEX_AT (v, i) = z;
+}
+
+INLINE_FUN
+gsl_complex *
+gsl_vector_complex_ptr (gsl_vector_complex * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return GSL_COMPLEX_AT (v, i);
+}
+
+INLINE_FUN
+const gsl_complex *
+gsl_vector_complex_const_ptr (const gsl_vector_complex * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return GSL_COMPLEX_AT (v, i);
+}
+
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_COMPLEX_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_float.h
new file mode 100644
index 00000000..182f4874
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_float.h
@@ -0,0 +1,251 @@
+/* vector/gsl_vector_complex_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_COMPLEX_FLOAT_H__
+#define __GSL_VECTOR_COMPLEX_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_float.h>
+#include <gsl/gsl_vector_complex.h>
+#include <gsl/gsl_block_complex_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ float *data;
+ gsl_block_complex_float *block;
+ int owner;
+} gsl_vector_complex_float;
+
+typedef struct
+{
+ gsl_vector_complex_float vector;
+} _gsl_vector_complex_float_view;
+
+typedef _gsl_vector_complex_float_view gsl_vector_complex_float_view;
+
+typedef struct
+{
+ gsl_vector_complex_float vector;
+} _gsl_vector_complex_float_const_view;
+
+typedef const _gsl_vector_complex_float_const_view gsl_vector_complex_float_const_view;
+
+/* Allocation */
+
+gsl_vector_complex_float *gsl_vector_complex_float_alloc (const size_t n);
+gsl_vector_complex_float *gsl_vector_complex_float_calloc (const size_t n);
+
+gsl_vector_complex_float *
+gsl_vector_complex_float_alloc_from_block (gsl_block_complex_float * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_complex_float *
+gsl_vector_complex_float_alloc_from_vector (gsl_vector_complex_float * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_complex_float_free (gsl_vector_complex_float * v);
+
+/* Views */
+
+_gsl_vector_complex_float_view
+gsl_vector_complex_float_view_array (float *base,
+ size_t n);
+
+_gsl_vector_complex_float_view
+gsl_vector_complex_float_view_array_with_stride (float *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_float_const_view
+gsl_vector_complex_float_const_view_array (const float *base,
+ size_t n);
+
+_gsl_vector_complex_float_const_view
+gsl_vector_complex_float_const_view_array_with_stride (const float *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_float_view
+gsl_vector_complex_float_subvector (gsl_vector_complex_float *base,
+ size_t i,
+ size_t n);
+
+
+_gsl_vector_complex_float_view
+gsl_vector_complex_float_subvector_with_stride (gsl_vector_complex_float *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_float_const_view
+gsl_vector_complex_float_const_subvector (const gsl_vector_complex_float *base,
+ size_t i,
+ size_t n);
+
+
+_gsl_vector_complex_float_const_view
+gsl_vector_complex_float_const_subvector_with_stride (const gsl_vector_complex_float *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_float_view
+gsl_vector_complex_float_real (gsl_vector_complex_float *v);
+
+_gsl_vector_float_view
+gsl_vector_complex_float_imag (gsl_vector_complex_float *v);
+
+_gsl_vector_float_const_view
+gsl_vector_complex_float_const_real (const gsl_vector_complex_float *v);
+
+_gsl_vector_float_const_view
+gsl_vector_complex_float_const_imag (const gsl_vector_complex_float *v);
+
+
+/* Operations */
+
+void gsl_vector_complex_float_set_zero (gsl_vector_complex_float * v);
+void gsl_vector_complex_float_set_all (gsl_vector_complex_float * v,
+ gsl_complex_float z);
+int gsl_vector_complex_float_set_basis (gsl_vector_complex_float * v, size_t i);
+
+int gsl_vector_complex_float_fread (FILE * stream,
+ gsl_vector_complex_float * v);
+int gsl_vector_complex_float_fwrite (FILE * stream,
+ const gsl_vector_complex_float * v);
+int gsl_vector_complex_float_fscanf (FILE * stream,
+ gsl_vector_complex_float * v);
+int gsl_vector_complex_float_fprintf (FILE * stream,
+ const gsl_vector_complex_float * v,
+ const char *format);
+
+int gsl_vector_complex_float_memcpy (gsl_vector_complex_float * dest, const gsl_vector_complex_float * src);
+
+int gsl_vector_complex_float_reverse (gsl_vector_complex_float * v);
+
+int gsl_vector_complex_float_swap (gsl_vector_complex_float * v, gsl_vector_complex_float * w);
+int gsl_vector_complex_float_swap_elements (gsl_vector_complex_float * v, const size_t i, const size_t j);
+
+int gsl_vector_complex_float_equal (const gsl_vector_complex_float * u,
+ const gsl_vector_complex_float * v);
+
+int gsl_vector_complex_float_isnull (const gsl_vector_complex_float * v);
+int gsl_vector_complex_float_ispos (const gsl_vector_complex_float * v);
+int gsl_vector_complex_float_isneg (const gsl_vector_complex_float * v);
+int gsl_vector_complex_float_isnonneg (const gsl_vector_complex_float * v);
+
+int gsl_vector_complex_float_add (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+int gsl_vector_complex_float_sub (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+int gsl_vector_complex_float_mul (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+int gsl_vector_complex_float_div (gsl_vector_complex_float * a, const gsl_vector_complex_float * b);
+int gsl_vector_complex_float_scale (gsl_vector_complex_float * a, const gsl_complex_float x);
+int gsl_vector_complex_float_add_constant (gsl_vector_complex_float * a, const gsl_complex_float x);
+
+INLINE_DECL gsl_complex_float gsl_vector_complex_float_get (const gsl_vector_complex_float * v, const size_t i);
+INLINE_DECL void gsl_vector_complex_float_set (gsl_vector_complex_float * v, const size_t i, gsl_complex_float z);
+INLINE_DECL gsl_complex_float *gsl_vector_complex_float_ptr (gsl_vector_complex_float * v, const size_t i);
+INLINE_DECL const gsl_complex_float *gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+gsl_complex_float
+gsl_vector_complex_float_get (const gsl_vector_complex_float * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ gsl_complex_float zero = {{0, 0}};
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
+ }
+#endif
+ return *GSL_COMPLEX_FLOAT_AT (v, i);
+}
+
+INLINE_FUN
+void
+gsl_vector_complex_float_set (gsl_vector_complex_float * v,
+ const size_t i, gsl_complex_float z)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ *GSL_COMPLEX_FLOAT_AT (v, i) = z;
+}
+
+INLINE_FUN
+gsl_complex_float *
+gsl_vector_complex_float_ptr (gsl_vector_complex_float * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return GSL_COMPLEX_FLOAT_AT (v, i);
+}
+
+INLINE_FUN
+const gsl_complex_float *
+gsl_vector_complex_float_const_ptr (const gsl_vector_complex_float * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return GSL_COMPLEX_FLOAT_AT (v, i);
+}
+
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_COMPLEX_FLOAT_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_long_double.h
new file mode 100644
index 00000000..91755e0c
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_complex_long_double.h
@@ -0,0 +1,251 @@
+/* vector/gsl_vector_complex_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__
+#define __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_complex.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_vector_long_double.h>
+#include <gsl/gsl_vector_complex.h>
+#include <gsl/gsl_block_complex_long_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ long double *data;
+ gsl_block_complex_long_double *block;
+ int owner;
+} gsl_vector_complex_long_double;
+
+typedef struct
+{
+ gsl_vector_complex_long_double vector;
+} _gsl_vector_complex_long_double_view;
+
+typedef _gsl_vector_complex_long_double_view gsl_vector_complex_long_double_view;
+
+typedef struct
+{
+ gsl_vector_complex_long_double vector;
+} _gsl_vector_complex_long_double_const_view;
+
+typedef const _gsl_vector_complex_long_double_const_view gsl_vector_complex_long_double_const_view;
+
+/* Allocation */
+
+gsl_vector_complex_long_double *gsl_vector_complex_long_double_alloc (const size_t n);
+gsl_vector_complex_long_double *gsl_vector_complex_long_double_calloc (const size_t n);
+
+gsl_vector_complex_long_double *
+gsl_vector_complex_long_double_alloc_from_block (gsl_block_complex_long_double * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_complex_long_double *
+gsl_vector_complex_long_double_alloc_from_vector (gsl_vector_complex_long_double * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_complex_long_double_free (gsl_vector_complex_long_double * v);
+
+/* Views */
+
+_gsl_vector_complex_long_double_view
+gsl_vector_complex_long_double_view_array (long double *base,
+ size_t n);
+
+_gsl_vector_complex_long_double_view
+gsl_vector_complex_long_double_view_array_with_stride (long double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_long_double_const_view
+gsl_vector_complex_long_double_const_view_array (const long double *base,
+ size_t n);
+
+_gsl_vector_complex_long_double_const_view
+gsl_vector_complex_long_double_const_view_array_with_stride (const long double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_long_double_view
+gsl_vector_complex_long_double_subvector (gsl_vector_complex_long_double *base,
+ size_t i,
+ size_t n);
+
+
+_gsl_vector_complex_long_double_view
+gsl_vector_complex_long_double_subvector_with_stride (gsl_vector_complex_long_double *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_complex_long_double_const_view
+gsl_vector_complex_long_double_const_subvector (const gsl_vector_complex_long_double *base,
+ size_t i,
+ size_t n);
+
+
+_gsl_vector_complex_long_double_const_view
+gsl_vector_complex_long_double_const_subvector_with_stride (const gsl_vector_complex_long_double *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_long_double_view
+gsl_vector_complex_long_double_real (gsl_vector_complex_long_double *v);
+
+_gsl_vector_long_double_view
+gsl_vector_complex_long_double_imag (gsl_vector_complex_long_double *v);
+
+_gsl_vector_long_double_const_view
+gsl_vector_complex_long_double_const_real (const gsl_vector_complex_long_double *v);
+
+_gsl_vector_long_double_const_view
+gsl_vector_complex_long_double_const_imag (const gsl_vector_complex_long_double *v);
+
+
+/* Operations */
+
+void gsl_vector_complex_long_double_set_zero (gsl_vector_complex_long_double * v);
+void gsl_vector_complex_long_double_set_all (gsl_vector_complex_long_double * v,
+ gsl_complex_long_double z);
+int gsl_vector_complex_long_double_set_basis (gsl_vector_complex_long_double * v, size_t i);
+
+int gsl_vector_complex_long_double_fread (FILE * stream,
+ gsl_vector_complex_long_double * v);
+int gsl_vector_complex_long_double_fwrite (FILE * stream,
+ const gsl_vector_complex_long_double * v);
+int gsl_vector_complex_long_double_fscanf (FILE * stream,
+ gsl_vector_complex_long_double * v);
+int gsl_vector_complex_long_double_fprintf (FILE * stream,
+ const gsl_vector_complex_long_double * v,
+ const char *format);
+
+int gsl_vector_complex_long_double_memcpy (gsl_vector_complex_long_double * dest, const gsl_vector_complex_long_double * src);
+
+int gsl_vector_complex_long_double_reverse (gsl_vector_complex_long_double * v);
+
+int gsl_vector_complex_long_double_swap (gsl_vector_complex_long_double * v, gsl_vector_complex_long_double * w);
+int gsl_vector_complex_long_double_swap_elements (gsl_vector_complex_long_double * v, const size_t i, const size_t j);
+
+int gsl_vector_complex_long_double_equal (const gsl_vector_complex_long_double * u,
+ const gsl_vector_complex_long_double * v);
+
+int gsl_vector_complex_long_double_isnull (const gsl_vector_complex_long_double * v);
+int gsl_vector_complex_long_double_ispos (const gsl_vector_complex_long_double * v);
+int gsl_vector_complex_long_double_isneg (const gsl_vector_complex_long_double * v);
+int gsl_vector_complex_long_double_isnonneg (const gsl_vector_complex_long_double * v);
+
+int gsl_vector_complex_long_double_add (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+int gsl_vector_complex_long_double_sub (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+int gsl_vector_complex_long_double_mul (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+int gsl_vector_complex_long_double_div (gsl_vector_complex_long_double * a, const gsl_vector_complex_long_double * b);
+int gsl_vector_complex_long_double_scale (gsl_vector_complex_long_double * a, const gsl_complex_long_double x);
+int gsl_vector_complex_long_double_add_constant (gsl_vector_complex_long_double * a, const gsl_complex_long_double x);
+
+INLINE_DECL gsl_complex_long_double gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v, const size_t i);
+INLINE_DECL void gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v, const size_t i, gsl_complex_long_double z);
+INLINE_DECL gsl_complex_long_double *gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v, const size_t i);
+INLINE_DECL const gsl_complex_long_double *gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+gsl_complex_long_double
+gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ gsl_complex_long_double zero = {{0, 0}};
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero);
+ }
+#endif
+ return *GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
+}
+
+INLINE_FUN
+void
+gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v,
+ const size_t i, gsl_complex_long_double z)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ *GSL_COMPLEX_LONG_DOUBLE_AT (v, i) = z;
+}
+
+INLINE_FUN
+gsl_complex_long_double *
+gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
+}
+
+INLINE_FUN
+const gsl_complex_long_double *
+gsl_vector_complex_long_double_const_ptr (const gsl_vector_complex_long_double * v,
+ const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return GSL_COMPLEX_LONG_DOUBLE_AT (v, i);
+}
+
+
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_COMPLEX_LONG_DOUBLE_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_double.h
new file mode 100644
index 00000000..26a12d83
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_double.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_DOUBLE_H__
+#define __GSL_VECTOR_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ double *data;
+ gsl_block *block;
+ int owner;
+}
+gsl_vector;
+
+typedef struct
+{
+ gsl_vector vector;
+} _gsl_vector_view;
+
+typedef _gsl_vector_view gsl_vector_view;
+
+typedef struct
+{
+ gsl_vector vector;
+} _gsl_vector_const_view;
+
+typedef const _gsl_vector_const_view gsl_vector_const_view;
+
+
+/* Allocation */
+
+gsl_vector *gsl_vector_alloc (const size_t n);
+gsl_vector *gsl_vector_calloc (const size_t n);
+
+gsl_vector *gsl_vector_alloc_from_block (gsl_block * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector *gsl_vector_alloc_from_vector (gsl_vector * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_free (gsl_vector * v);
+
+/* Views */
+
+_gsl_vector_view
+gsl_vector_view_array (double *v, size_t n);
+
+_gsl_vector_view
+gsl_vector_view_array_with_stride (double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_const_view
+gsl_vector_const_view_array (const double *v, size_t n);
+
+_gsl_vector_const_view
+gsl_vector_const_view_array_with_stride (const double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_view
+gsl_vector_subvector (gsl_vector *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_view
+gsl_vector_subvector_with_stride (gsl_vector *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_const_view
+gsl_vector_const_subvector (const gsl_vector *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_const_view
+gsl_vector_const_subvector_with_stride (const gsl_vector *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_set_zero (gsl_vector * v);
+void gsl_vector_set_all (gsl_vector * v, double x);
+int gsl_vector_set_basis (gsl_vector * v, size_t i);
+
+int gsl_vector_fread (FILE * stream, gsl_vector * v);
+int gsl_vector_fwrite (FILE * stream, const gsl_vector * v);
+int gsl_vector_fscanf (FILE * stream, gsl_vector * v);
+int gsl_vector_fprintf (FILE * stream, const gsl_vector * v,
+ const char *format);
+
+int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector * src);
+
+int gsl_vector_reverse (gsl_vector * v);
+
+int gsl_vector_swap (gsl_vector * v, gsl_vector * w);
+int gsl_vector_swap_elements (gsl_vector * v, const size_t i, const size_t j);
+
+double gsl_vector_max (const gsl_vector * v);
+double gsl_vector_min (const gsl_vector * v);
+void gsl_vector_minmax (const gsl_vector * v, double * min_out, double * max_out);
+
+size_t gsl_vector_max_index (const gsl_vector * v);
+size_t gsl_vector_min_index (const gsl_vector * v);
+void gsl_vector_minmax_index (const gsl_vector * v, size_t * imin, size_t * imax);
+
+int gsl_vector_add (gsl_vector * a, const gsl_vector * b);
+int gsl_vector_sub (gsl_vector * a, const gsl_vector * b);
+int gsl_vector_mul (gsl_vector * a, const gsl_vector * b);
+int gsl_vector_div (gsl_vector * a, const gsl_vector * b);
+int gsl_vector_scale (gsl_vector * a, const double x);
+int gsl_vector_add_constant (gsl_vector * a, const double x);
+
+int gsl_vector_equal (const gsl_vector * u,
+ const gsl_vector * v);
+
+int gsl_vector_isnull (const gsl_vector * v);
+int gsl_vector_ispos (const gsl_vector * v);
+int gsl_vector_isneg (const gsl_vector * v);
+int gsl_vector_isnonneg (const gsl_vector * v);
+
+INLINE_DECL double gsl_vector_get (const gsl_vector * v, const size_t i);
+INLINE_DECL void gsl_vector_set (gsl_vector * v, const size_t i, double x);
+INLINE_DECL double * gsl_vector_ptr (gsl_vector * v, const size_t i);
+INLINE_DECL const double * gsl_vector_const_ptr (const gsl_vector * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+double
+gsl_vector_get (const gsl_vector * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_set (gsl_vector * v, const size_t i, double x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+double *
+gsl_vector_ptr (gsl_vector * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (double *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const double *
+gsl_vector_const_ptr (const gsl_vector * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const double *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_DOUBLE_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_float.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_float.h
new file mode 100644
index 00000000..2b499c81
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_float.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_float.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_FLOAT_H__
+#define __GSL_VECTOR_FLOAT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_float.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ float *data;
+ gsl_block_float *block;
+ int owner;
+}
+gsl_vector_float;
+
+typedef struct
+{
+ gsl_vector_float vector;
+} _gsl_vector_float_view;
+
+typedef _gsl_vector_float_view gsl_vector_float_view;
+
+typedef struct
+{
+ gsl_vector_float vector;
+} _gsl_vector_float_const_view;
+
+typedef const _gsl_vector_float_const_view gsl_vector_float_const_view;
+
+
+/* Allocation */
+
+gsl_vector_float *gsl_vector_float_alloc (const size_t n);
+gsl_vector_float *gsl_vector_float_calloc (const size_t n);
+
+gsl_vector_float *gsl_vector_float_alloc_from_block (gsl_block_float * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_float *gsl_vector_float_alloc_from_vector (gsl_vector_float * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_float_free (gsl_vector_float * v);
+
+/* Views */
+
+_gsl_vector_float_view
+gsl_vector_float_view_array (float *v, size_t n);
+
+_gsl_vector_float_view
+gsl_vector_float_view_array_with_stride (float *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_float_const_view
+gsl_vector_float_const_view_array (const float *v, size_t n);
+
+_gsl_vector_float_const_view
+gsl_vector_float_const_view_array_with_stride (const float *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_float_view
+gsl_vector_float_subvector (gsl_vector_float *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_float_view
+gsl_vector_float_subvector_with_stride (gsl_vector_float *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_float_const_view
+gsl_vector_float_const_subvector (const gsl_vector_float *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_float_const_view
+gsl_vector_float_const_subvector_with_stride (const gsl_vector_float *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_float_set_zero (gsl_vector_float * v);
+void gsl_vector_float_set_all (gsl_vector_float * v, float x);
+int gsl_vector_float_set_basis (gsl_vector_float * v, size_t i);
+
+int gsl_vector_float_fread (FILE * stream, gsl_vector_float * v);
+int gsl_vector_float_fwrite (FILE * stream, const gsl_vector_float * v);
+int gsl_vector_float_fscanf (FILE * stream, gsl_vector_float * v);
+int gsl_vector_float_fprintf (FILE * stream, const gsl_vector_float * v,
+ const char *format);
+
+int gsl_vector_float_memcpy (gsl_vector_float * dest, const gsl_vector_float * src);
+
+int gsl_vector_float_reverse (gsl_vector_float * v);
+
+int gsl_vector_float_swap (gsl_vector_float * v, gsl_vector_float * w);
+int gsl_vector_float_swap_elements (gsl_vector_float * v, const size_t i, const size_t j);
+
+float gsl_vector_float_max (const gsl_vector_float * v);
+float gsl_vector_float_min (const gsl_vector_float * v);
+void gsl_vector_float_minmax (const gsl_vector_float * v, float * min_out, float * max_out);
+
+size_t gsl_vector_float_max_index (const gsl_vector_float * v);
+size_t gsl_vector_float_min_index (const gsl_vector_float * v);
+void gsl_vector_float_minmax_index (const gsl_vector_float * v, size_t * imin, size_t * imax);
+
+int gsl_vector_float_add (gsl_vector_float * a, const gsl_vector_float * b);
+int gsl_vector_float_sub (gsl_vector_float * a, const gsl_vector_float * b);
+int gsl_vector_float_mul (gsl_vector_float * a, const gsl_vector_float * b);
+int gsl_vector_float_div (gsl_vector_float * a, const gsl_vector_float * b);
+int gsl_vector_float_scale (gsl_vector_float * a, const double x);
+int gsl_vector_float_add_constant (gsl_vector_float * a, const double x);
+
+int gsl_vector_float_equal (const gsl_vector_float * u,
+ const gsl_vector_float * v);
+
+int gsl_vector_float_isnull (const gsl_vector_float * v);
+int gsl_vector_float_ispos (const gsl_vector_float * v);
+int gsl_vector_float_isneg (const gsl_vector_float * v);
+int gsl_vector_float_isnonneg (const gsl_vector_float * v);
+
+INLINE_DECL float gsl_vector_float_get (const gsl_vector_float * v, const size_t i);
+INLINE_DECL void gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x);
+INLINE_DECL float * gsl_vector_float_ptr (gsl_vector_float * v, const size_t i);
+INLINE_DECL const float * gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+float
+gsl_vector_float_get (const gsl_vector_float * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+float *
+gsl_vector_float_ptr (gsl_vector_float * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (float *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const float *
+gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const float *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_FLOAT_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_int.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_int.h
new file mode 100644
index 00000000..de04a449
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_int.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_int.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_INT_H__
+#define __GSL_VECTOR_INT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_int.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ int *data;
+ gsl_block_int *block;
+ int owner;
+}
+gsl_vector_int;
+
+typedef struct
+{
+ gsl_vector_int vector;
+} _gsl_vector_int_view;
+
+typedef _gsl_vector_int_view gsl_vector_int_view;
+
+typedef struct
+{
+ gsl_vector_int vector;
+} _gsl_vector_int_const_view;
+
+typedef const _gsl_vector_int_const_view gsl_vector_int_const_view;
+
+
+/* Allocation */
+
+gsl_vector_int *gsl_vector_int_alloc (const size_t n);
+gsl_vector_int *gsl_vector_int_calloc (const size_t n);
+
+gsl_vector_int *gsl_vector_int_alloc_from_block (gsl_block_int * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_int *gsl_vector_int_alloc_from_vector (gsl_vector_int * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_int_free (gsl_vector_int * v);
+
+/* Views */
+
+_gsl_vector_int_view
+gsl_vector_int_view_array (int *v, size_t n);
+
+_gsl_vector_int_view
+gsl_vector_int_view_array_with_stride (int *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_int_const_view
+gsl_vector_int_const_view_array (const int *v, size_t n);
+
+_gsl_vector_int_const_view
+gsl_vector_int_const_view_array_with_stride (const int *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_int_view
+gsl_vector_int_subvector (gsl_vector_int *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_int_view
+gsl_vector_int_subvector_with_stride (gsl_vector_int *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_int_const_view
+gsl_vector_int_const_subvector (const gsl_vector_int *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_int_const_view
+gsl_vector_int_const_subvector_with_stride (const gsl_vector_int *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_int_set_zero (gsl_vector_int * v);
+void gsl_vector_int_set_all (gsl_vector_int * v, int x);
+int gsl_vector_int_set_basis (gsl_vector_int * v, size_t i);
+
+int gsl_vector_int_fread (FILE * stream, gsl_vector_int * v);
+int gsl_vector_int_fwrite (FILE * stream, const gsl_vector_int * v);
+int gsl_vector_int_fscanf (FILE * stream, gsl_vector_int * v);
+int gsl_vector_int_fprintf (FILE * stream, const gsl_vector_int * v,
+ const char *format);
+
+int gsl_vector_int_memcpy (gsl_vector_int * dest, const gsl_vector_int * src);
+
+int gsl_vector_int_reverse (gsl_vector_int * v);
+
+int gsl_vector_int_swap (gsl_vector_int * v, gsl_vector_int * w);
+int gsl_vector_int_swap_elements (gsl_vector_int * v, const size_t i, const size_t j);
+
+int gsl_vector_int_max (const gsl_vector_int * v);
+int gsl_vector_int_min (const gsl_vector_int * v);
+void gsl_vector_int_minmax (const gsl_vector_int * v, int * min_out, int * max_out);
+
+size_t gsl_vector_int_max_index (const gsl_vector_int * v);
+size_t gsl_vector_int_min_index (const gsl_vector_int * v);
+void gsl_vector_int_minmax_index (const gsl_vector_int * v, size_t * imin, size_t * imax);
+
+int gsl_vector_int_add (gsl_vector_int * a, const gsl_vector_int * b);
+int gsl_vector_int_sub (gsl_vector_int * a, const gsl_vector_int * b);
+int gsl_vector_int_mul (gsl_vector_int * a, const gsl_vector_int * b);
+int gsl_vector_int_div (gsl_vector_int * a, const gsl_vector_int * b);
+int gsl_vector_int_scale (gsl_vector_int * a, const double x);
+int gsl_vector_int_add_constant (gsl_vector_int * a, const double x);
+
+int gsl_vector_int_equal (const gsl_vector_int * u,
+ const gsl_vector_int * v);
+
+int gsl_vector_int_isnull (const gsl_vector_int * v);
+int gsl_vector_int_ispos (const gsl_vector_int * v);
+int gsl_vector_int_isneg (const gsl_vector_int * v);
+int gsl_vector_int_isnonneg (const gsl_vector_int * v);
+
+INLINE_DECL int gsl_vector_int_get (const gsl_vector_int * v, const size_t i);
+INLINE_DECL void gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x);
+INLINE_DECL int * gsl_vector_int_ptr (gsl_vector_int * v, const size_t i);
+INLINE_DECL const int * gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+int
+gsl_vector_int_get (const gsl_vector_int * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+int *
+gsl_vector_int_ptr (gsl_vector_int * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (int *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const int *
+gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const int *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_INT_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long.h
new file mode 100644
index 00000000..f844a027
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_long.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_LONG_H__
+#define __GSL_VECTOR_LONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_long.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ long *data;
+ gsl_block_long *block;
+ int owner;
+}
+gsl_vector_long;
+
+typedef struct
+{
+ gsl_vector_long vector;
+} _gsl_vector_long_view;
+
+typedef _gsl_vector_long_view gsl_vector_long_view;
+
+typedef struct
+{
+ gsl_vector_long vector;
+} _gsl_vector_long_const_view;
+
+typedef const _gsl_vector_long_const_view gsl_vector_long_const_view;
+
+
+/* Allocation */
+
+gsl_vector_long *gsl_vector_long_alloc (const size_t n);
+gsl_vector_long *gsl_vector_long_calloc (const size_t n);
+
+gsl_vector_long *gsl_vector_long_alloc_from_block (gsl_block_long * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_long *gsl_vector_long_alloc_from_vector (gsl_vector_long * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_long_free (gsl_vector_long * v);
+
+/* Views */
+
+_gsl_vector_long_view
+gsl_vector_long_view_array (long *v, size_t n);
+
+_gsl_vector_long_view
+gsl_vector_long_view_array_with_stride (long *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_long_const_view
+gsl_vector_long_const_view_array (const long *v, size_t n);
+
+_gsl_vector_long_const_view
+gsl_vector_long_const_view_array_with_stride (const long *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_long_view
+gsl_vector_long_subvector (gsl_vector_long *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_long_view
+gsl_vector_long_subvector_with_stride (gsl_vector_long *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_long_const_view
+gsl_vector_long_const_subvector (const gsl_vector_long *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_long_const_view
+gsl_vector_long_const_subvector_with_stride (const gsl_vector_long *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_long_set_zero (gsl_vector_long * v);
+void gsl_vector_long_set_all (gsl_vector_long * v, long x);
+int gsl_vector_long_set_basis (gsl_vector_long * v, size_t i);
+
+int gsl_vector_long_fread (FILE * stream, gsl_vector_long * v);
+int gsl_vector_long_fwrite (FILE * stream, const gsl_vector_long * v);
+int gsl_vector_long_fscanf (FILE * stream, gsl_vector_long * v);
+int gsl_vector_long_fprintf (FILE * stream, const gsl_vector_long * v,
+ const char *format);
+
+int gsl_vector_long_memcpy (gsl_vector_long * dest, const gsl_vector_long * src);
+
+int gsl_vector_long_reverse (gsl_vector_long * v);
+
+int gsl_vector_long_swap (gsl_vector_long * v, gsl_vector_long * w);
+int gsl_vector_long_swap_elements (gsl_vector_long * v, const size_t i, const size_t j);
+
+long gsl_vector_long_max (const gsl_vector_long * v);
+long gsl_vector_long_min (const gsl_vector_long * v);
+void gsl_vector_long_minmax (const gsl_vector_long * v, long * min_out, long * max_out);
+
+size_t gsl_vector_long_max_index (const gsl_vector_long * v);
+size_t gsl_vector_long_min_index (const gsl_vector_long * v);
+void gsl_vector_long_minmax_index (const gsl_vector_long * v, size_t * imin, size_t * imax);
+
+int gsl_vector_long_add (gsl_vector_long * a, const gsl_vector_long * b);
+int gsl_vector_long_sub (gsl_vector_long * a, const gsl_vector_long * b);
+int gsl_vector_long_mul (gsl_vector_long * a, const gsl_vector_long * b);
+int gsl_vector_long_div (gsl_vector_long * a, const gsl_vector_long * b);
+int gsl_vector_long_scale (gsl_vector_long * a, const double x);
+int gsl_vector_long_add_constant (gsl_vector_long * a, const double x);
+
+int gsl_vector_long_equal (const gsl_vector_long * u,
+ const gsl_vector_long * v);
+
+int gsl_vector_long_isnull (const gsl_vector_long * v);
+int gsl_vector_long_ispos (const gsl_vector_long * v);
+int gsl_vector_long_isneg (const gsl_vector_long * v);
+int gsl_vector_long_isnonneg (const gsl_vector_long * v);
+
+INLINE_DECL long gsl_vector_long_get (const gsl_vector_long * v, const size_t i);
+INLINE_DECL void gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x);
+INLINE_DECL long * gsl_vector_long_ptr (gsl_vector_long * v, const size_t i);
+INLINE_DECL const long * gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+long
+gsl_vector_long_get (const gsl_vector_long * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+long *
+gsl_vector_long_ptr (gsl_vector_long * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (long *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const long *
+gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const long *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_LONG_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long_double.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long_double.h
new file mode 100644
index 00000000..836b09a5
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_long_double.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_long_double.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_LONG_DOUBLE_H__
+#define __GSL_VECTOR_LONG_DOUBLE_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_long_double.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ long double *data;
+ gsl_block_long_double *block;
+ int owner;
+}
+gsl_vector_long_double;
+
+typedef struct
+{
+ gsl_vector_long_double vector;
+} _gsl_vector_long_double_view;
+
+typedef _gsl_vector_long_double_view gsl_vector_long_double_view;
+
+typedef struct
+{
+ gsl_vector_long_double vector;
+} _gsl_vector_long_double_const_view;
+
+typedef const _gsl_vector_long_double_const_view gsl_vector_long_double_const_view;
+
+
+/* Allocation */
+
+gsl_vector_long_double *gsl_vector_long_double_alloc (const size_t n);
+gsl_vector_long_double *gsl_vector_long_double_calloc (const size_t n);
+
+gsl_vector_long_double *gsl_vector_long_double_alloc_from_block (gsl_block_long_double * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_long_double *gsl_vector_long_double_alloc_from_vector (gsl_vector_long_double * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_long_double_free (gsl_vector_long_double * v);
+
+/* Views */
+
+_gsl_vector_long_double_view
+gsl_vector_long_double_view_array (long double *v, size_t n);
+
+_gsl_vector_long_double_view
+gsl_vector_long_double_view_array_with_stride (long double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_long_double_const_view
+gsl_vector_long_double_const_view_array (const long double *v, size_t n);
+
+_gsl_vector_long_double_const_view
+gsl_vector_long_double_const_view_array_with_stride (const long double *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_long_double_view
+gsl_vector_long_double_subvector (gsl_vector_long_double *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_long_double_view
+gsl_vector_long_double_subvector_with_stride (gsl_vector_long_double *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_long_double_const_view
+gsl_vector_long_double_const_subvector (const gsl_vector_long_double *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_long_double_const_view
+gsl_vector_long_double_const_subvector_with_stride (const gsl_vector_long_double *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_long_double_set_zero (gsl_vector_long_double * v);
+void gsl_vector_long_double_set_all (gsl_vector_long_double * v, long double x);
+int gsl_vector_long_double_set_basis (gsl_vector_long_double * v, size_t i);
+
+int gsl_vector_long_double_fread (FILE * stream, gsl_vector_long_double * v);
+int gsl_vector_long_double_fwrite (FILE * stream, const gsl_vector_long_double * v);
+int gsl_vector_long_double_fscanf (FILE * stream, gsl_vector_long_double * v);
+int gsl_vector_long_double_fprintf (FILE * stream, const gsl_vector_long_double * v,
+ const char *format);
+
+int gsl_vector_long_double_memcpy (gsl_vector_long_double * dest, const gsl_vector_long_double * src);
+
+int gsl_vector_long_double_reverse (gsl_vector_long_double * v);
+
+int gsl_vector_long_double_swap (gsl_vector_long_double * v, gsl_vector_long_double * w);
+int gsl_vector_long_double_swap_elements (gsl_vector_long_double * v, const size_t i, const size_t j);
+
+long double gsl_vector_long_double_max (const gsl_vector_long_double * v);
+long double gsl_vector_long_double_min (const gsl_vector_long_double * v);
+void gsl_vector_long_double_minmax (const gsl_vector_long_double * v, long double * min_out, long double * max_out);
+
+size_t gsl_vector_long_double_max_index (const gsl_vector_long_double * v);
+size_t gsl_vector_long_double_min_index (const gsl_vector_long_double * v);
+void gsl_vector_long_double_minmax_index (const gsl_vector_long_double * v, size_t * imin, size_t * imax);
+
+int gsl_vector_long_double_add (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+int gsl_vector_long_double_sub (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+int gsl_vector_long_double_mul (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+int gsl_vector_long_double_div (gsl_vector_long_double * a, const gsl_vector_long_double * b);
+int gsl_vector_long_double_scale (gsl_vector_long_double * a, const double x);
+int gsl_vector_long_double_add_constant (gsl_vector_long_double * a, const double x);
+
+int gsl_vector_long_double_equal (const gsl_vector_long_double * u,
+ const gsl_vector_long_double * v);
+
+int gsl_vector_long_double_isnull (const gsl_vector_long_double * v);
+int gsl_vector_long_double_ispos (const gsl_vector_long_double * v);
+int gsl_vector_long_double_isneg (const gsl_vector_long_double * v);
+int gsl_vector_long_double_isnonneg (const gsl_vector_long_double * v);
+
+INLINE_DECL long double gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i);
+INLINE_DECL void gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x);
+INLINE_DECL long double * gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i);
+INLINE_DECL const long double * gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+long double
+gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+long double *
+gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (long double *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const long double *
+gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const long double *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_LONG_DOUBLE_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_short.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_short.h
new file mode 100644
index 00000000..4f41f7a6
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_short.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_short.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_SHORT_H__
+#define __GSL_VECTOR_SHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_short.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ short *data;
+ gsl_block_short *block;
+ int owner;
+}
+gsl_vector_short;
+
+typedef struct
+{
+ gsl_vector_short vector;
+} _gsl_vector_short_view;
+
+typedef _gsl_vector_short_view gsl_vector_short_view;
+
+typedef struct
+{
+ gsl_vector_short vector;
+} _gsl_vector_short_const_view;
+
+typedef const _gsl_vector_short_const_view gsl_vector_short_const_view;
+
+
+/* Allocation */
+
+gsl_vector_short *gsl_vector_short_alloc (const size_t n);
+gsl_vector_short *gsl_vector_short_calloc (const size_t n);
+
+gsl_vector_short *gsl_vector_short_alloc_from_block (gsl_block_short * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_short *gsl_vector_short_alloc_from_vector (gsl_vector_short * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_short_free (gsl_vector_short * v);
+
+/* Views */
+
+_gsl_vector_short_view
+gsl_vector_short_view_array (short *v, size_t n);
+
+_gsl_vector_short_view
+gsl_vector_short_view_array_with_stride (short *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_short_const_view
+gsl_vector_short_const_view_array (const short *v, size_t n);
+
+_gsl_vector_short_const_view
+gsl_vector_short_const_view_array_with_stride (const short *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_short_view
+gsl_vector_short_subvector (gsl_vector_short *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_short_view
+gsl_vector_short_subvector_with_stride (gsl_vector_short *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_short_const_view
+gsl_vector_short_const_subvector (const gsl_vector_short *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_short_const_view
+gsl_vector_short_const_subvector_with_stride (const gsl_vector_short *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_short_set_zero (gsl_vector_short * v);
+void gsl_vector_short_set_all (gsl_vector_short * v, short x);
+int gsl_vector_short_set_basis (gsl_vector_short * v, size_t i);
+
+int gsl_vector_short_fread (FILE * stream, gsl_vector_short * v);
+int gsl_vector_short_fwrite (FILE * stream, const gsl_vector_short * v);
+int gsl_vector_short_fscanf (FILE * stream, gsl_vector_short * v);
+int gsl_vector_short_fprintf (FILE * stream, const gsl_vector_short * v,
+ const char *format);
+
+int gsl_vector_short_memcpy (gsl_vector_short * dest, const gsl_vector_short * src);
+
+int gsl_vector_short_reverse (gsl_vector_short * v);
+
+int gsl_vector_short_swap (gsl_vector_short * v, gsl_vector_short * w);
+int gsl_vector_short_swap_elements (gsl_vector_short * v, const size_t i, const size_t j);
+
+short gsl_vector_short_max (const gsl_vector_short * v);
+short gsl_vector_short_min (const gsl_vector_short * v);
+void gsl_vector_short_minmax (const gsl_vector_short * v, short * min_out, short * max_out);
+
+size_t gsl_vector_short_max_index (const gsl_vector_short * v);
+size_t gsl_vector_short_min_index (const gsl_vector_short * v);
+void gsl_vector_short_minmax_index (const gsl_vector_short * v, size_t * imin, size_t * imax);
+
+int gsl_vector_short_add (gsl_vector_short * a, const gsl_vector_short * b);
+int gsl_vector_short_sub (gsl_vector_short * a, const gsl_vector_short * b);
+int gsl_vector_short_mul (gsl_vector_short * a, const gsl_vector_short * b);
+int gsl_vector_short_div (gsl_vector_short * a, const gsl_vector_short * b);
+int gsl_vector_short_scale (gsl_vector_short * a, const double x);
+int gsl_vector_short_add_constant (gsl_vector_short * a, const double x);
+
+int gsl_vector_short_equal (const gsl_vector_short * u,
+ const gsl_vector_short * v);
+
+int gsl_vector_short_isnull (const gsl_vector_short * v);
+int gsl_vector_short_ispos (const gsl_vector_short * v);
+int gsl_vector_short_isneg (const gsl_vector_short * v);
+int gsl_vector_short_isnonneg (const gsl_vector_short * v);
+
+INLINE_DECL short gsl_vector_short_get (const gsl_vector_short * v, const size_t i);
+INLINE_DECL void gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x);
+INLINE_DECL short * gsl_vector_short_ptr (gsl_vector_short * v, const size_t i);
+INLINE_DECL const short * gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+short
+gsl_vector_short_get (const gsl_vector_short * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+short *
+gsl_vector_short_ptr (gsl_vector_short * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (short *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const short *
+gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const short *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_SHORT_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uchar.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uchar.h
new file mode 100644
index 00000000..b27096d9
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uchar.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_uchar.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_UCHAR_H__
+#define __GSL_VECTOR_UCHAR_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_uchar.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ unsigned char *data;
+ gsl_block_uchar *block;
+ int owner;
+}
+gsl_vector_uchar;
+
+typedef struct
+{
+ gsl_vector_uchar vector;
+} _gsl_vector_uchar_view;
+
+typedef _gsl_vector_uchar_view gsl_vector_uchar_view;
+
+typedef struct
+{
+ gsl_vector_uchar vector;
+} _gsl_vector_uchar_const_view;
+
+typedef const _gsl_vector_uchar_const_view gsl_vector_uchar_const_view;
+
+
+/* Allocation */
+
+gsl_vector_uchar *gsl_vector_uchar_alloc (const size_t n);
+gsl_vector_uchar *gsl_vector_uchar_calloc (const size_t n);
+
+gsl_vector_uchar *gsl_vector_uchar_alloc_from_block (gsl_block_uchar * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_uchar *gsl_vector_uchar_alloc_from_vector (gsl_vector_uchar * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_uchar_free (gsl_vector_uchar * v);
+
+/* Views */
+
+_gsl_vector_uchar_view
+gsl_vector_uchar_view_array (unsigned char *v, size_t n);
+
+_gsl_vector_uchar_view
+gsl_vector_uchar_view_array_with_stride (unsigned char *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_uchar_const_view
+gsl_vector_uchar_const_view_array (const unsigned char *v, size_t n);
+
+_gsl_vector_uchar_const_view
+gsl_vector_uchar_const_view_array_with_stride (const unsigned char *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_uchar_view
+gsl_vector_uchar_subvector (gsl_vector_uchar *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_uchar_view
+gsl_vector_uchar_subvector_with_stride (gsl_vector_uchar *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_uchar_const_view
+gsl_vector_uchar_const_subvector (const gsl_vector_uchar *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_uchar_const_view
+gsl_vector_uchar_const_subvector_with_stride (const gsl_vector_uchar *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_uchar_set_zero (gsl_vector_uchar * v);
+void gsl_vector_uchar_set_all (gsl_vector_uchar * v, unsigned char x);
+int gsl_vector_uchar_set_basis (gsl_vector_uchar * v, size_t i);
+
+int gsl_vector_uchar_fread (FILE * stream, gsl_vector_uchar * v);
+int gsl_vector_uchar_fwrite (FILE * stream, const gsl_vector_uchar * v);
+int gsl_vector_uchar_fscanf (FILE * stream, gsl_vector_uchar * v);
+int gsl_vector_uchar_fprintf (FILE * stream, const gsl_vector_uchar * v,
+ const char *format);
+
+int gsl_vector_uchar_memcpy (gsl_vector_uchar * dest, const gsl_vector_uchar * src);
+
+int gsl_vector_uchar_reverse (gsl_vector_uchar * v);
+
+int gsl_vector_uchar_swap (gsl_vector_uchar * v, gsl_vector_uchar * w);
+int gsl_vector_uchar_swap_elements (gsl_vector_uchar * v, const size_t i, const size_t j);
+
+unsigned char gsl_vector_uchar_max (const gsl_vector_uchar * v);
+unsigned char gsl_vector_uchar_min (const gsl_vector_uchar * v);
+void gsl_vector_uchar_minmax (const gsl_vector_uchar * v, unsigned char * min_out, unsigned char * max_out);
+
+size_t gsl_vector_uchar_max_index (const gsl_vector_uchar * v);
+size_t gsl_vector_uchar_min_index (const gsl_vector_uchar * v);
+void gsl_vector_uchar_minmax_index (const gsl_vector_uchar * v, size_t * imin, size_t * imax);
+
+int gsl_vector_uchar_add (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+int gsl_vector_uchar_sub (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+int gsl_vector_uchar_mul (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+int gsl_vector_uchar_div (gsl_vector_uchar * a, const gsl_vector_uchar * b);
+int gsl_vector_uchar_scale (gsl_vector_uchar * a, const double x);
+int gsl_vector_uchar_add_constant (gsl_vector_uchar * a, const double x);
+
+int gsl_vector_uchar_equal (const gsl_vector_uchar * u,
+ const gsl_vector_uchar * v);
+
+int gsl_vector_uchar_isnull (const gsl_vector_uchar * v);
+int gsl_vector_uchar_ispos (const gsl_vector_uchar * v);
+int gsl_vector_uchar_isneg (const gsl_vector_uchar * v);
+int gsl_vector_uchar_isnonneg (const gsl_vector_uchar * v);
+
+INLINE_DECL unsigned char gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i);
+INLINE_DECL void gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x);
+INLINE_DECL unsigned char * gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i);
+INLINE_DECL const unsigned char * gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+unsigned char
+gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+unsigned char *
+gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (unsigned char *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const unsigned char *
+gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const unsigned char *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_UCHAR_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uint.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uint.h
new file mode 100644
index 00000000..d2f6cb35
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_uint.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_uint.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_UINT_H__
+#define __GSL_VECTOR_UINT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_uint.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ unsigned int *data;
+ gsl_block_uint *block;
+ int owner;
+}
+gsl_vector_uint;
+
+typedef struct
+{
+ gsl_vector_uint vector;
+} _gsl_vector_uint_view;
+
+typedef _gsl_vector_uint_view gsl_vector_uint_view;
+
+typedef struct
+{
+ gsl_vector_uint vector;
+} _gsl_vector_uint_const_view;
+
+typedef const _gsl_vector_uint_const_view gsl_vector_uint_const_view;
+
+
+/* Allocation */
+
+gsl_vector_uint *gsl_vector_uint_alloc (const size_t n);
+gsl_vector_uint *gsl_vector_uint_calloc (const size_t n);
+
+gsl_vector_uint *gsl_vector_uint_alloc_from_block (gsl_block_uint * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_uint *gsl_vector_uint_alloc_from_vector (gsl_vector_uint * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_uint_free (gsl_vector_uint * v);
+
+/* Views */
+
+_gsl_vector_uint_view
+gsl_vector_uint_view_array (unsigned int *v, size_t n);
+
+_gsl_vector_uint_view
+gsl_vector_uint_view_array_with_stride (unsigned int *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_uint_const_view
+gsl_vector_uint_const_view_array (const unsigned int *v, size_t n);
+
+_gsl_vector_uint_const_view
+gsl_vector_uint_const_view_array_with_stride (const unsigned int *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_uint_view
+gsl_vector_uint_subvector (gsl_vector_uint *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_uint_view
+gsl_vector_uint_subvector_with_stride (gsl_vector_uint *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_uint_const_view
+gsl_vector_uint_const_subvector (const gsl_vector_uint *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_uint_const_view
+gsl_vector_uint_const_subvector_with_stride (const gsl_vector_uint *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_uint_set_zero (gsl_vector_uint * v);
+void gsl_vector_uint_set_all (gsl_vector_uint * v, unsigned int x);
+int gsl_vector_uint_set_basis (gsl_vector_uint * v, size_t i);
+
+int gsl_vector_uint_fread (FILE * stream, gsl_vector_uint * v);
+int gsl_vector_uint_fwrite (FILE * stream, const gsl_vector_uint * v);
+int gsl_vector_uint_fscanf (FILE * stream, gsl_vector_uint * v);
+int gsl_vector_uint_fprintf (FILE * stream, const gsl_vector_uint * v,
+ const char *format);
+
+int gsl_vector_uint_memcpy (gsl_vector_uint * dest, const gsl_vector_uint * src);
+
+int gsl_vector_uint_reverse (gsl_vector_uint * v);
+
+int gsl_vector_uint_swap (gsl_vector_uint * v, gsl_vector_uint * w);
+int gsl_vector_uint_swap_elements (gsl_vector_uint * v, const size_t i, const size_t j);
+
+unsigned int gsl_vector_uint_max (const gsl_vector_uint * v);
+unsigned int gsl_vector_uint_min (const gsl_vector_uint * v);
+void gsl_vector_uint_minmax (const gsl_vector_uint * v, unsigned int * min_out, unsigned int * max_out);
+
+size_t gsl_vector_uint_max_index (const gsl_vector_uint * v);
+size_t gsl_vector_uint_min_index (const gsl_vector_uint * v);
+void gsl_vector_uint_minmax_index (const gsl_vector_uint * v, size_t * imin, size_t * imax);
+
+int gsl_vector_uint_add (gsl_vector_uint * a, const gsl_vector_uint * b);
+int gsl_vector_uint_sub (gsl_vector_uint * a, const gsl_vector_uint * b);
+int gsl_vector_uint_mul (gsl_vector_uint * a, const gsl_vector_uint * b);
+int gsl_vector_uint_div (gsl_vector_uint * a, const gsl_vector_uint * b);
+int gsl_vector_uint_scale (gsl_vector_uint * a, const double x);
+int gsl_vector_uint_add_constant (gsl_vector_uint * a, const double x);
+
+int gsl_vector_uint_equal (const gsl_vector_uint * u,
+ const gsl_vector_uint * v);
+
+int gsl_vector_uint_isnull (const gsl_vector_uint * v);
+int gsl_vector_uint_ispos (const gsl_vector_uint * v);
+int gsl_vector_uint_isneg (const gsl_vector_uint * v);
+int gsl_vector_uint_isnonneg (const gsl_vector_uint * v);
+
+INLINE_DECL unsigned int gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i);
+INLINE_DECL void gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x);
+INLINE_DECL unsigned int * gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i);
+INLINE_DECL const unsigned int * gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+unsigned int
+gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+unsigned int *
+gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (unsigned int *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const unsigned int *
+gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const unsigned int *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_UINT_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ulong.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ulong.h
new file mode 100644
index 00000000..01bf2429
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ulong.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_ulong.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_ULONG_H__
+#define __GSL_VECTOR_ULONG_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_ulong.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ unsigned long *data;
+ gsl_block_ulong *block;
+ int owner;
+}
+gsl_vector_ulong;
+
+typedef struct
+{
+ gsl_vector_ulong vector;
+} _gsl_vector_ulong_view;
+
+typedef _gsl_vector_ulong_view gsl_vector_ulong_view;
+
+typedef struct
+{
+ gsl_vector_ulong vector;
+} _gsl_vector_ulong_const_view;
+
+typedef const _gsl_vector_ulong_const_view gsl_vector_ulong_const_view;
+
+
+/* Allocation */
+
+gsl_vector_ulong *gsl_vector_ulong_alloc (const size_t n);
+gsl_vector_ulong *gsl_vector_ulong_calloc (const size_t n);
+
+gsl_vector_ulong *gsl_vector_ulong_alloc_from_block (gsl_block_ulong * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_ulong *gsl_vector_ulong_alloc_from_vector (gsl_vector_ulong * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_ulong_free (gsl_vector_ulong * v);
+
+/* Views */
+
+_gsl_vector_ulong_view
+gsl_vector_ulong_view_array (unsigned long *v, size_t n);
+
+_gsl_vector_ulong_view
+gsl_vector_ulong_view_array_with_stride (unsigned long *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_ulong_const_view
+gsl_vector_ulong_const_view_array (const unsigned long *v, size_t n);
+
+_gsl_vector_ulong_const_view
+gsl_vector_ulong_const_view_array_with_stride (const unsigned long *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_ulong_view
+gsl_vector_ulong_subvector (gsl_vector_ulong *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_ulong_view
+gsl_vector_ulong_subvector_with_stride (gsl_vector_ulong *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_ulong_const_view
+gsl_vector_ulong_const_subvector (const gsl_vector_ulong *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_ulong_const_view
+gsl_vector_ulong_const_subvector_with_stride (const gsl_vector_ulong *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_ulong_set_zero (gsl_vector_ulong * v);
+void gsl_vector_ulong_set_all (gsl_vector_ulong * v, unsigned long x);
+int gsl_vector_ulong_set_basis (gsl_vector_ulong * v, size_t i);
+
+int gsl_vector_ulong_fread (FILE * stream, gsl_vector_ulong * v);
+int gsl_vector_ulong_fwrite (FILE * stream, const gsl_vector_ulong * v);
+int gsl_vector_ulong_fscanf (FILE * stream, gsl_vector_ulong * v);
+int gsl_vector_ulong_fprintf (FILE * stream, const gsl_vector_ulong * v,
+ const char *format);
+
+int gsl_vector_ulong_memcpy (gsl_vector_ulong * dest, const gsl_vector_ulong * src);
+
+int gsl_vector_ulong_reverse (gsl_vector_ulong * v);
+
+int gsl_vector_ulong_swap (gsl_vector_ulong * v, gsl_vector_ulong * w);
+int gsl_vector_ulong_swap_elements (gsl_vector_ulong * v, const size_t i, const size_t j);
+
+unsigned long gsl_vector_ulong_max (const gsl_vector_ulong * v);
+unsigned long gsl_vector_ulong_min (const gsl_vector_ulong * v);
+void gsl_vector_ulong_minmax (const gsl_vector_ulong * v, unsigned long * min_out, unsigned long * max_out);
+
+size_t gsl_vector_ulong_max_index (const gsl_vector_ulong * v);
+size_t gsl_vector_ulong_min_index (const gsl_vector_ulong * v);
+void gsl_vector_ulong_minmax_index (const gsl_vector_ulong * v, size_t * imin, size_t * imax);
+
+int gsl_vector_ulong_add (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+int gsl_vector_ulong_sub (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+int gsl_vector_ulong_mul (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+int gsl_vector_ulong_div (gsl_vector_ulong * a, const gsl_vector_ulong * b);
+int gsl_vector_ulong_scale (gsl_vector_ulong * a, const double x);
+int gsl_vector_ulong_add_constant (gsl_vector_ulong * a, const double x);
+
+int gsl_vector_ulong_equal (const gsl_vector_ulong * u,
+ const gsl_vector_ulong * v);
+
+int gsl_vector_ulong_isnull (const gsl_vector_ulong * v);
+int gsl_vector_ulong_ispos (const gsl_vector_ulong * v);
+int gsl_vector_ulong_isneg (const gsl_vector_ulong * v);
+int gsl_vector_ulong_isnonneg (const gsl_vector_ulong * v);
+
+INLINE_DECL unsigned long gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i);
+INLINE_DECL void gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x);
+INLINE_DECL unsigned long * gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i);
+INLINE_DECL const unsigned long * gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+unsigned long
+gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+unsigned long *
+gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (unsigned long *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const unsigned long *
+gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const unsigned long *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_ULONG_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ushort.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ushort.h
new file mode 100644
index 00000000..7b7e6643
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_vector_ushort.h
@@ -0,0 +1,230 @@
+/* vector/gsl_vector_ushort.h
+ *
+ * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Gerard Jungman, Brian Gough
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_VECTOR_USHORT_H__
+#define __GSL_VECTOR_USHORT_H__
+
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_inline.h>
+#include <gsl/gsl_check_range.h>
+#include <gsl/gsl_block_ushort.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef struct
+{
+ size_t size;
+ size_t stride;
+ unsigned short *data;
+ gsl_block_ushort *block;
+ int owner;
+}
+gsl_vector_ushort;
+
+typedef struct
+{
+ gsl_vector_ushort vector;
+} _gsl_vector_ushort_view;
+
+typedef _gsl_vector_ushort_view gsl_vector_ushort_view;
+
+typedef struct
+{
+ gsl_vector_ushort vector;
+} _gsl_vector_ushort_const_view;
+
+typedef const _gsl_vector_ushort_const_view gsl_vector_ushort_const_view;
+
+
+/* Allocation */
+
+gsl_vector_ushort *gsl_vector_ushort_alloc (const size_t n);
+gsl_vector_ushort *gsl_vector_ushort_calloc (const size_t n);
+
+gsl_vector_ushort *gsl_vector_ushort_alloc_from_block (gsl_block_ushort * b,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+gsl_vector_ushort *gsl_vector_ushort_alloc_from_vector (gsl_vector_ushort * v,
+ const size_t offset,
+ const size_t n,
+ const size_t stride);
+
+void gsl_vector_ushort_free (gsl_vector_ushort * v);
+
+/* Views */
+
+_gsl_vector_ushort_view
+gsl_vector_ushort_view_array (unsigned short *v, size_t n);
+
+_gsl_vector_ushort_view
+gsl_vector_ushort_view_array_with_stride (unsigned short *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_ushort_const_view
+gsl_vector_ushort_const_view_array (const unsigned short *v, size_t n);
+
+_gsl_vector_ushort_const_view
+gsl_vector_ushort_const_view_array_with_stride (const unsigned short *base,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_ushort_view
+gsl_vector_ushort_subvector (gsl_vector_ushort *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_ushort_view
+gsl_vector_ushort_subvector_with_stride (gsl_vector_ushort *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+_gsl_vector_ushort_const_view
+gsl_vector_ushort_const_subvector (const gsl_vector_ushort *v,
+ size_t i,
+ size_t n);
+
+_gsl_vector_ushort_const_view
+gsl_vector_ushort_const_subvector_with_stride (const gsl_vector_ushort *v,
+ size_t i,
+ size_t stride,
+ size_t n);
+
+/* Operations */
+
+void gsl_vector_ushort_set_zero (gsl_vector_ushort * v);
+void gsl_vector_ushort_set_all (gsl_vector_ushort * v, unsigned short x);
+int gsl_vector_ushort_set_basis (gsl_vector_ushort * v, size_t i);
+
+int gsl_vector_ushort_fread (FILE * stream, gsl_vector_ushort * v);
+int gsl_vector_ushort_fwrite (FILE * stream, const gsl_vector_ushort * v);
+int gsl_vector_ushort_fscanf (FILE * stream, gsl_vector_ushort * v);
+int gsl_vector_ushort_fprintf (FILE * stream, const gsl_vector_ushort * v,
+ const char *format);
+
+int gsl_vector_ushort_memcpy (gsl_vector_ushort * dest, const gsl_vector_ushort * src);
+
+int gsl_vector_ushort_reverse (gsl_vector_ushort * v);
+
+int gsl_vector_ushort_swap (gsl_vector_ushort * v, gsl_vector_ushort * w);
+int gsl_vector_ushort_swap_elements (gsl_vector_ushort * v, const size_t i, const size_t j);
+
+unsigned short gsl_vector_ushort_max (const gsl_vector_ushort * v);
+unsigned short gsl_vector_ushort_min (const gsl_vector_ushort * v);
+void gsl_vector_ushort_minmax (const gsl_vector_ushort * v, unsigned short * min_out, unsigned short * max_out);
+
+size_t gsl_vector_ushort_max_index (const gsl_vector_ushort * v);
+size_t gsl_vector_ushort_min_index (const gsl_vector_ushort * v);
+void gsl_vector_ushort_minmax_index (const gsl_vector_ushort * v, size_t * imin, size_t * imax);
+
+int gsl_vector_ushort_add (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+int gsl_vector_ushort_sub (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+int gsl_vector_ushort_mul (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+int gsl_vector_ushort_div (gsl_vector_ushort * a, const gsl_vector_ushort * b);
+int gsl_vector_ushort_scale (gsl_vector_ushort * a, const double x);
+int gsl_vector_ushort_add_constant (gsl_vector_ushort * a, const double x);
+
+int gsl_vector_ushort_equal (const gsl_vector_ushort * u,
+ const gsl_vector_ushort * v);
+
+int gsl_vector_ushort_isnull (const gsl_vector_ushort * v);
+int gsl_vector_ushort_ispos (const gsl_vector_ushort * v);
+int gsl_vector_ushort_isneg (const gsl_vector_ushort * v);
+int gsl_vector_ushort_isnonneg (const gsl_vector_ushort * v);
+
+INLINE_DECL unsigned short gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i);
+INLINE_DECL void gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x);
+INLINE_DECL unsigned short * gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i);
+INLINE_DECL const unsigned short * gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i);
+
+#ifdef HAVE_INLINE
+
+INLINE_FUN
+unsigned short
+gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0);
+ }
+#endif
+ return v->data[i * v->stride];
+}
+
+INLINE_FUN
+void
+gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_VOID ("index out of range", GSL_EINVAL);
+ }
+#endif
+ v->data[i * v->stride] = x;
+}
+
+INLINE_FUN
+unsigned short *
+gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (unsigned short *) (v->data + i * v->stride);
+}
+
+INLINE_FUN
+const unsigned short *
+gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i)
+{
+#if GSL_RANGE_CHECK
+ if (GSL_RANGE_COND(i >= v->size))
+ {
+ GSL_ERROR_NULL ("index out of range", GSL_EINVAL);
+ }
+#endif
+ return (const unsigned short *) (v->data + i * v->stride);
+}
+#endif /* HAVE_INLINE */
+
+__END_DECLS
+
+#endif /* __GSL_VECTOR_USHORT_H__ */
+
+
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_version.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_version.h
new file mode 100644
index 00000000..6fd5ede3
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_version.h
@@ -0,0 +1,26 @@
+#ifndef __GSL_VERSION_H__
+#define __GSL_VERSION_H__
+
+#include <gsl/gsl_types.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+__BEGIN_DECLS
+
+
+#define GSL_VERSION "2.1"
+#define GSL_MAJOR_VERSION 2
+#define GSL_MINOR_VERSION 1
+
+GSL_VAR const char * gsl_version;
+
+__END_DECLS
+
+#endif /* __GSL_VERSION_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet.h
new file mode 100644
index 00000000..5e1ec2b2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet.h
@@ -0,0 +1,100 @@
+/* wavelet/gsl_wavelet.h
+ *
+ * Copyright (C) 2004 Ivo Alxneit
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_WAVELET_H__
+#define __GSL_WAVELET_H__
+#include <stdlib.h>
+#include <gsl/gsl_types.h>
+#include <gsl/gsl_errno.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+typedef enum {
+ gsl_wavelet_forward = 1, gsl_wavelet_backward = -1
+}
+gsl_wavelet_direction;
+
+typedef struct
+{
+ const char *name;
+ int (*init) (const double **h1, const double **g1,
+ const double **h2, const double **g2, size_t * nc,
+ size_t * offset, size_t member);
+}
+gsl_wavelet_type;
+
+typedef struct
+{
+ const gsl_wavelet_type *type;
+ const double *h1;
+ const double *g1;
+ const double *h2;
+ const double *g2;
+ size_t nc;
+ size_t offset;
+}
+gsl_wavelet;
+
+typedef struct
+{
+ double *scratch;
+ size_t n;
+}
+gsl_wavelet_workspace;
+
+GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies;
+GSL_VAR const gsl_wavelet_type *gsl_wavelet_daubechies_centered;
+GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar;
+GSL_VAR const gsl_wavelet_type *gsl_wavelet_haar_centered;
+GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline;
+GSL_VAR const gsl_wavelet_type *gsl_wavelet_bspline_centered;
+
+gsl_wavelet *gsl_wavelet_alloc (const gsl_wavelet_type * T, size_t k);
+void gsl_wavelet_free (gsl_wavelet * w);
+const char *gsl_wavelet_name (const gsl_wavelet * w);
+
+gsl_wavelet_workspace *gsl_wavelet_workspace_alloc (size_t n);
+void gsl_wavelet_workspace_free (gsl_wavelet_workspace * work);
+
+int gsl_wavelet_transform (const gsl_wavelet * w,
+ double *data, size_t stride, size_t n,
+ gsl_wavelet_direction dir,
+ gsl_wavelet_workspace * work);
+
+int gsl_wavelet_transform_forward (const gsl_wavelet * w,
+ double *data, size_t stride, size_t n,
+ gsl_wavelet_workspace * work);
+
+int gsl_wavelet_transform_inverse (const gsl_wavelet * w,
+ double *data, size_t stride, size_t n,
+ gsl_wavelet_workspace * work);
+
+__END_DECLS
+
+#endif /* __GSL_WAVELET_H__ */
diff --git a/2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet2d.h b/2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet2d.h
new file mode 100644
index 00000000..173f43e2
--- /dev/null
+++ b/2.3-1/thirdparty/includes/GSL/gsl/gsl_wavelet2d.h
@@ -0,0 +1,107 @@
+/* wavelet/gsl_wavelet.h
+ *
+ * Copyright (C) 2004 Ivo Alxneit
+ *
+ * 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 3 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.
+ */
+
+#ifndef __GSL_WAVELET2D_H__
+#define __GSL_WAVELET2D_H__
+#include <stdlib.h>
+#include <gsl/gsl_errno.h>
+#include <gsl/gsl_vector_double.h>
+#include <gsl/gsl_matrix_double.h>
+#include <gsl/gsl_wavelet.h>
+
+#undef __BEGIN_DECLS
+#undef __END_DECLS
+#ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+#else
+# define __BEGIN_DECLS /* empty */
+# define __END_DECLS /* empty */
+#endif
+
+__BEGIN_DECLS
+
+int gsl_wavelet2d_transform (const gsl_wavelet * w,
+ double *data,
+ size_t tda, size_t size1, size_t size2,
+ gsl_wavelet_direction dir,
+ gsl_wavelet_workspace * work);
+
+int gsl_wavelet2d_transform_forward (const gsl_wavelet * w,
+ double *data,
+ size_t tda, size_t size1, size_t size2,
+ gsl_wavelet_workspace * work);
+
+int gsl_wavelet2d_transform_inverse (const gsl_wavelet * w,
+ double *data,
+ size_t tda, size_t size1, size_t size2,
+ gsl_wavelet_workspace * work);
+
+int gsl_wavelet2d_nstransform (const gsl_wavelet * w,
+ double *data,
+ size_t tda, size_t size1, size_t size2,
+ gsl_wavelet_direction dir,
+ gsl_wavelet_workspace * work);
+
+int gsl_wavelet2d_nstransform_forward (const gsl_wavelet * w,
+ double *data,
+ size_t tda, size_t size1, size_t size2,
+ gsl_wavelet_workspace * work);
+
+int gsl_wavelet2d_nstransform_inverse (const gsl_wavelet * w,
+ double *data,
+ size_t tda, size_t size1, size_t size2,
+ gsl_wavelet_workspace * work);
+
+int
+gsl_wavelet2d_transform_matrix (const gsl_wavelet * w,
+ gsl_matrix * a,
+ gsl_wavelet_direction dir,
+ gsl_wavelet_workspace * work);
+
+int
+gsl_wavelet2d_transform_matrix_forward (const gsl_wavelet * w,
+ gsl_matrix * a,
+ gsl_wavelet_workspace * work);
+
+int
+gsl_wavelet2d_transform_matrix_inverse (const gsl_wavelet * w,
+ gsl_matrix * a,
+ gsl_wavelet_workspace * work);
+
+
+int
+gsl_wavelet2d_nstransform_matrix (const gsl_wavelet * w,
+ gsl_matrix * a,
+ gsl_wavelet_direction dir,
+ gsl_wavelet_workspace * work);
+
+int
+gsl_wavelet2d_nstransform_matrix_forward (const gsl_wavelet * w,
+ gsl_matrix * a,
+ gsl_wavelet_workspace * work);
+
+int
+gsl_wavelet2d_nstransform_matrix_inverse (const gsl_wavelet * w,
+ gsl_matrix * a,
+ gsl_wavelet_workspace * work);
+
+__END_DECLS
+
+#endif /* __GSL_WAVELET2D_H__ */