Re:Why physicists still use Fortran (2015)
by sbmassey on Sunday October 15, 2017 @01:03PM
(#15477973)
Unless you're passing arrays of pointers to things about, the individual elements in a C array should be contiguous.
[ Parent
| on HN ]
Re:Why physicists still use Fortran (2015)
by tyingq on Sunday October 15, 2017 @01:06PM
(#15477988)
>Unless you're passing arrays of pointers
That seems to be the context from his example:
for(i = 0; i < nrows; i++){
array[i] = malloc(ncolumns * sizeof(double));
}
I suppose the counterpoint is that he's doing it wrong. But again, maybe physicists just don't want a tool with that much flexibility.
Re:Why physicists still use Fortran (2015)
by ryanpepper on Sunday October 15, 2017 @04:33PM
(#15479151)
I was taught to do it like this in C:
double *a = malloc(sizeof(double)*nx*ny*nz);
int id;
for(int k = 0; k < nz; k++) {
for(int j = 0; j < ny; j++) {
for(int i = 0; < i < nx; i++) {
id = k*nx*ny + j*nx + i;
a[id] = /* some mathematical operation */
}
}
}
You can do it in other ways (arrays of pointes, etc), but I think this is probably the simplest conceptually, and the memory is contiguous.
Re:Why physicists still use Fortran (2015)
by cowsandmilk on Sunday October 15, 2017 @07:26PM
(#15479935)
he's definitely doing it wrong there. As a scientific C programmer, I would never do that, I would malloc one contiguous array of nrows*ncolumns. And my freeing of the array would be as simple as his Fortran deallocate.
Sure, C could make multi-dimensional array handling nicer, but I have macros that basically do his A[x,y,z] for me, admittedly a bit more verbosely.
Many of his points about Fortran are true, but almost all his statements about C are false. Or nearly so, yes, copying an array of floats requires calling a function, memcpy, and not just using an equals sign, but that ain't rough and falls into his idea of "what actually happens ‘under the hood’ inside a computer". And others are easily handled by adopting things like the MKL (want to take the sin of everything in an array, see https://software.intel.com/en-us/mkl-developer-reference-c-t... )
Re:Why physicists still use Fortran (2015)
by sbmassey on Sunday October 15, 2017 @01:33PM
(#15478088)
Fair enough then, I suppose that in C you have to do something like that if you want both that your matrix size is decidable at runtime, and to be able to index it with m[x][y] rather than some function.
Re:Why physicists still use Fortran (2015)
by iamrecursion on Sunday October 15, 2017 @02:43PM
(#15478509)
That’s not strictly true. You can malloc an m*n sized array and then assign to another array the pointer to the head of each column, allowing you standard style indexing.
Re:Why physicists still use Fortran (2015)
by PeterisP on Sunday October 15, 2017 @03:18PM
(#15478745)
If you do that, every access will actually dereference that pointer and won't be able to optimize the standard style indexing to a multiplication and addition, so this still carries a significant performance cost.