diff options
author | Harpreet | 2015-08-27 02:32:30 +0530 |
---|---|---|
committer | Harpreet | 2015-08-27 02:32:30 +0530 |
commit | f9afc284ce324fa3c13606ad90895beec507c249 (patch) | |
tree | a1680fec3342c4eb00b73cd056ff9fad519c5877 /sci_gateway/cpp/sci_sym_solution.cpp | |
download | symphony-f9afc284ce324fa3c13606ad90895beec507c249.tar.gz symphony-f9afc284ce324fa3c13606ad90895beec507c249.tar.bz2 symphony-f9afc284ce324fa3c13606ad90895beec507c249.zip |
Master File
Diffstat (limited to 'sci_gateway/cpp/sci_sym_solution.cpp')
-rw-r--r-- | sci_gateway/cpp/sci_sym_solution.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/sci_gateway/cpp/sci_sym_solution.cpp b/sci_gateway/cpp/sci_sym_solution.cpp new file mode 100644 index 0000000..a08e5b9 --- /dev/null +++ b/sci_gateway/cpp/sci_sym_solution.cpp @@ -0,0 +1,101 @@ +/* + * Symphony Toolbox + * Provides the solution after the problem is solved + * By Keyur Joshi + */ +#include "symphony.h" +#include "sci_iofunc.hpp" + +extern sym_environment* global_sym_env; //defined in globals.cpp + +extern "C" { +#include "api_scilab.h" +#include "Scierror.h" +#include "sciprint.h" +#include "BOOL.h" +#include <localization.h> + +int sci_sym_getVarSoln(char *fname){ + + //error management variable + SciErr sciErr; + int iRet; + + //data declarations + int numVars; + double *solution; + + //ensure that environment is active + if(global_sym_env==NULL){ + sciprint("Error: Symphony environment not initialized. Please run 'sym_open()' first.\n"); + return 1; + } + + //code to check arguments and get them + CheckInputArgument(pvApiCtx,0,0) ; + CheckOutputArgument(pvApiCtx,1,1) ; + + //code to process input + iRet=sym_get_num_cols(global_sym_env,&numVars); + if(iRet==FUNCTION_TERMINATED_ABNORMALLY){ + Scierror(999, "An error occured. Has the problem been loaded and solved?\n"); + return 1; + } + solution=new double[numVars]; + iRet=sym_get_col_solution(global_sym_env,solution); + if(iRet==FUNCTION_TERMINATED_ABNORMALLY){ + //Scierror(999, "An error occured. Has the problem been solved? Is the problem feasible?\n"); + delete[] solution; + return 1; + } + + //code to give output + sciErr=createMatrixOfDouble(pvApiCtx,nbInputArgument(pvApiCtx)+1,1,numVars,solution); + if (sciErr.iErr) + { + printError(&sciErr, 0); + delete[] solution; + return 1; + } + AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx)+1; + ReturnArguments(pvApiCtx); + + delete[] solution; + + return 0; +} + +int sci_sym_getObjVal(char *fname){ + + //error management variable + SciErr sciErr; + int iRet; + + //data declarations + double solution; + + //ensure that environment is active + if(global_sym_env==NULL){ + sciprint("Error: Symphony environment not initialized. Please run 'sym_open()' first.\n"); + return 1; + } + + //code to check arguments and get them + CheckInputArgument(pvApiCtx,0,0) ; + CheckOutputArgument(pvApiCtx,1,1) ; + + //code to process input + iRet=sym_get_obj_val(global_sym_env,&solution); + if(iRet==FUNCTION_TERMINATED_ABNORMALLY){ + Scierror(999, "An error occured. Has the problem been loaded and solved? Is the problem feasible?\n"); + return 1; + } + + //code to give output + if(returnDoubleToScilab(solution)) + return 1; + + return 0; +} + +} |