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;