-
Notifications
You must be signed in to change notification settings - Fork 12
Replace recursion by a stack and divide only the necessary dimensions #21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Check if the distance is greater than each dimension and divide only the ones that are too big. Seems to save a lot of time. Need a benchmark.
Conflicts: src/lib/grav_tess.c
west and east were switched. This caused a weird bug that only happened when I started calculating the size differently.
The method used before is Ok for the equator but for the poles it is very wrong! I'm using the Vicenty formula from http://en.wikipedia.org/wiki/Great-circle_distance
Need more tests to verify results. Benchmarks show improved performance when dividing a lot.
Makes no difference and is a bit faster than the complicated Vincenty formula. Replace the name queue with the more accurate "stack".
Doesn't make much of a difference but gives slightly better results at the pole. Probably more pronounced if calculating on the side of a tesseroid.
The error increases quite fast for ggt components. So recommend not calculating too close
This is called from the print_help functions of each command-line program. Updated the website links. They pointed to fatiando.org and Google code. --version now prints only the version number. Can be used to embed the version number.
This will help identify the commit that generated those results
Conflicts: bench/Makefile
BenchmarkHere is the result from the master branch:
and here the current result from this branch:
Seems that when there are a lot of divisions happening, the advantage of a stack becomes more pronounced. |
Replace recursion by a stack and divide only the necessary dimensions
Check if the distance is greater than each dimension and divide only the ones that are too big.
TODO:
Checklist: