MathLink
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg207] MathLink
- From: rrigon at zeus.tamu.edu (Riccardo Rigon)
- Date: Sun, 20 Nov 1994 11:52:24 +0100
Dear mathgrouper, I am moving my first steps into MathLink. Suppose I would calculate the covariance of two list with an external program: The following is the code I wrote: -------covariance.tm------------------------------------------ double mlvariance P(( ml_doublep,ml_doublep, long)); <---THIS SHOULD BE WRONG :Begin: :Function: mlcovariance :Pattern: MLCovariance[ list:{___Real},list:{___Real} ] :Arguments: { Reverse[list], Reverse[list] } :ArgumentTypes: { RealList,RealList } :ReturnType: Real :End: :Evaluate: MLCovariance[ sequence___Real,sequence___Real]:= MLCovariance[{sequence},{sequence} ] ------covariance.c-------------------------------------------- #include "mathlink.h" double mlvariance(list1,list2, len) ml_doublep list1,list2; long len; { double res = 0, ras=0, rus=0; long lin=len; while(len--) {res += list1[len];ras +=list2[len]; rus+=list1[len]*list2[len];} return rus/(lin-1)-(res/(lin-1))*(ras/lin); } double main(argc, argv) int argc; char* argv[]; { return MLMain(argc, argv); } ---------------------------------------------------------- I did not have find any reference to the first line of the template (.tm) file. Looking at the mathlink.h file I can see that P(s) is substituted at compiling time with s, but still I do not have clear what is the use of this first line and how I have to set it. Can anyone help? I think that the problem of passing and receiving matrixes and lists of real numbers to and from external programs is an issue of quite general interest and WRI should deserve to it the time to write some clear examples. The Mathlink Reference Guide in my own view is still too much criptic on the subject. My best regards Riccardo Rigon, Ph. D. Civil Egineering Department Texas A&M University College Station, TX 77843 ph: (409)-845-0335 fax: (409)-862-1542 e-mail: rrigon at zeus.tamu.edu