I have a bunch of C++ files containing math processing functions, which I need to convert to pascal. But I have never programmed C++ (only ANSI C some 15 years ago) and I am stuck because of the syntax differences. It is all about the handling of data in arrays and I would be grateful for some hints on how to convert it.
Below is an example function from this file set. I have deduced that the variables named g<something> are globally defined, but I don't know how to handle the following: 1) The second line in the loop contains the command std::max, how can that be translated? I have not found any class definition for "std" with a method "max".... 2) The parameter into the function is a pointer *A of type double. To me that indicates a value of some kind, but in the code it suddenly seems to appear as an array with indexing. What would be the proper pascal translation of this? void ForwardModel::Decompose(double *A) { int i, j, k, jBegin, band; __int64 jPos, kPos; double sum; band = gNumNodeYZ; kPos = 0; for (k=1; k<=gNumNodes; ++k) { kPos += band; jBegin = std::max(k-band, 1); jPos = (jBegin-1) * band; for (j=jBegin; j<k; ++j) { jPos += band; sum = 0.0; for (i=jBegin; i<j; ++i) sum += A[kPos+i-1] * A[jPos+i-1]; A[kPos+j-1] = (A[kPos+j-1] - sum) / A[jPos+j-1]; } sum = 0.0; for (j=jBegin; j<k; ++j) sum += A[kPos+j-1] * A[kPos+j-1]; A[kPos+k-1] = sqrt(A[kPos+k-1] - sum); } } Crudely translated: procedure Decompose(var A: double); <<== Should it be an array here? var i, j, k, jBegin, band: integer; jPos, kPos: Int64; sum: double; begin band = gNumNodeYZ; kPos = 0; for k:=1 to gNumNodes do begin kPos := kPos + band; jBegin := std::max(k-band, 1); <<== what to do here? jPos := (jBegin-1) * band; for j := jBeginto k-1 do begin jPos := jPos + band; sum := 0.0; for i := jBegin to j-1 do sum := sum + A[kPos+i-1] * A[jPos+i-1]; <<== array???? A[kPos+j-1] := (A[kPos+j-1] - sum) / A[jPos+j-1]; end sum := 0.0; for j := jBegin to k-1 do sum := sum + A[kPos+j-1] * A[kPos+j-1]; <<== array???? A[kPos+k-1] := sqrt(A[kPos+k-1] - sum); end end; -- Bo Berglund Developer in Sweden _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal