----------------------------------------------------------------
addRealList.c
----------------------------------------------------------------
#include "mathlink.h" extern double addRealList( void ); double addRealList( void ) { int i,n; double *list; MLGetReal64List(stdlink,&list,&n); double sum=0; for(i=0;i<n;i++) sum = sum + list[i]; MLReleaseReal64List(stdlink,list,n); return sum; } #if WINDOWS_MATHLINK #if __BORLANDC__ #pragma argsused #endif int PASCAL WinMain( HINSTANCE hinstCurrent, HINSTANCE hinstPrevious, LPSTR lpszCmdLine, int nCmdShow) { char buff[512]; char FAR * buff_start = buff; char FAR * argv[32]; char FAR * FAR * argv_end = argv + 32; hinstPrevious = hinstPrevious; /* suppress warning */ if( !MLInitializeIcon( hinstCurrent, nCmdShow)) return 1; MLScanString( argv, &argv_end, &lpszCmdLine, &buff_start); return MLMain( (int)(argv_end - argv), argv); } #else int main(int argc, char* argv[]) { return MLMain(argc, argv); } #endif
------------------------------------------------------
addRealList.tm
------------------------------------------------------
:Begin: :Function: addRealList :Pattern: addRealList[ L:{___Real}] :Arguments: { L } :ArgumentTypes: { Manual } :ReturnType: Real :End: :Evaluate: addRealList::usage = "addRealList[x] gives the sum of the elements on x, given that they are real (double floating numbers)"
------------------------------------------
Makefile
------------------------------------------
MPREP = /usr/bin/mprep CXX = /usr/bin/c++ addRealList : addRealListtm.c ${CXX} addRealListtm.c addRealList.c -o addRealList -lML64i3 -lm -lpthread -lrt -lstdc++ addRealListtm.c : addRealList.tm ${MPREP} addRealList.tm -o $@ clean: rm addRealListtm.c rm addRealList
--------------------------------------------------------
addRealList.nb
--------------------------------------------------------
link = Install["./addRealList"]
?addRealList
addRealList[{1., 5., 6.}]
No comments:
Post a Comment