fivemack: (Default)
Tom Womack ([personal profile] fivemack) wrote2007-07-02 02:03 pm
Entry tags:

Becoming a Proper Scientific Programmer

This week, I am mostly learning Fortran 90.

It's a language which nicely matches the sort of code I like to write; arrays as really first-class language elements are good, and the DWIM read() and write() statements avoid some of the more tiresome boilerplate that typed languages attach to I/O.

I assume there are Fortranophones among my readers; is there a nicer way to write


atomcounts(fooi(1),fooi(2),fooi(3)) = &
1+atomcounts(fooi(1),fooi(2),fooi(3))
?

The obvious
atomcounts(fooi) = atomcounts(fooi)+1
translates as
atomcounts(fooi(1)) = 1+atomcounts(fooi(1))
atomcounts(fooi(2)) = 1+atomcounts(fooi(2))
atomcounts(fooi(3)) = 1+atomcounts(fooi(3))


which is a rank error since atomcounts is a 3D array; also, is there an increment-in-place procedure that I'm missing?
fanf: (Default)

[personal profile] fanf 2007-07-02 01:27 pm (UTC)(link)
If you want to borrow my copy of the F programming language, feel free to pop round and pick it up. F is a fairly sane subset of Fortran 90; there are F-specific compilers available, but you can also use it as a style guide for using Fortran in a modern style. (The most obvious oddity is that they omitted DO WHILE (?!) but some others are mentioned in http://www.swcp.com/~walt/FJ/9611/issue.html#giants)