There is a research paper with a couple of related numerical algorithms I would like to use as part of an open-source project of mine. The paper itself includes plenty of pseudo-code-snippets, but the authors have also written a full C++ implementation which is available publicly. I would like to include their work into my own library, which is written in a different programming language.
- If I straight-forward port their code to my language, it would of course be a derivative work so I would be stuck with their license (modified BSD). This would be a hassle because the rest of my project usese the Boost-license.
- I could start from their paper (i.e. pseudo-code-snippets) and implement everything from scratch in my language. But given that I have seen their C++-code, I am worried that I have been influenced sufficiently that anything I write would still be considered a derivative work, even though I wrote every line of code myself. Am I right?
What is the suggested course of action here? I am kinda confused about the line between an abstract algorithm (which is a non-copyrightable idea AFAIK) and actual code (which is under strict copyright by default). On which side of the spectrum does pseudo-code fall that can easily be converted into actual code?
The algorithm in question is the "double-double" and "quad-double" floating-point types described here (http://www.jaist.ac.jp/~s1410018/papers/qd.pdf) and implemented here (http://crd-legacy.lbl.gov/~dhbailey/mpdist/).