For a program I have to calculate the height according to EGM96. I found http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html - this site delivers files with parameters and a fortran-program. But I feel unable to understand what is going on in this Fortran-program and have no idea how to use the parameters to generate the correct height. Can someone explain the algorithm to me?
GeographicLib includes classes to compute the geoid height via interpolation on a grid of values (the Geoid class) and via summing the spherical harmonic sum (the GravityModel class). The interpolation method is pretty straightforward; see the associated documentation, Geoid height. I agree that the NGA programs for computing the geoid height via spherical harmonics are poorly documented. I've tried to explain the method on the documentation page, Gravity models. More to the point, I'm happy to answer questions. (I've had no luck getting NGA to answer questions about its programs!)