Permissions for Distribution
William Vetterling
03-03-2002, 08:51 PM
Information about the distribution of code containing Numerical Recipes routines can be found at http://www.nr.com/licenses/redistribute.html.
In order to request a permission for distribution, please send a written or electronic communication as indicated here http://www.nr.com/contact-info.html, that includes:
The name and mailing address of your organization
The title of the software
A list of the Recipes used
The form of use (executable, or in restricted cases object-code or source-code
A brief description of the program
A statement that you accept the conditions regarding copyright notification, disclaimer of warranty, and lack of business relationship between Numerical Recipes Software and your customers
We will then consider the proposal and let you know if any restrictions or licensing fees would apply.
hbell
06-08-2002, 03:24 PM
How long does this permission request process usually take?
Also, anybody know an easy way to get the specified copyright text embedded into the executable file using Compaq Visual Fortran?
Harry Bell
William Vetterling
06-09-2002, 08:53 AM
Excellent question.
The permission process, at its best, takes about one week. This is the case when the permission is a routine case (i.e. Recipes used internally in a compiled executable in which they are not accessible to the user in a menu, internal programming environment or the like). In less straighforward cases, as when ...
Recipes functionality is visible or accessible to the user
you anticipate the use of a large number of Recipes
a license or fee is involved
the nature of the application is unclear
some of the listed information (e.g. your mailing address) is omitted
... then it may require one or more rounds of email to discover what the correct level of permission or to settle the details. The whole process then depends on the volume of email we are answering. In some seasons, this may slow things considerably.
Our best advice is to start thinking about the permission early, as soon as you have determined what Recipes you plan to use and what the nature of the usage will be. If you are not 100% certain of the list of Recipes, arrange a permission and later request a modification. We will be able to act quickly as long as the changes are not substantial. In any case, we don't recommend that you wait until the day before a project deadline or an intended product release!
Bill Press
06-09-2002, 01:50 PM
For the second part of your question, I'd recommend something like this:
PROGRAM how_to_embed
! Methods for embedding a copyright notice in an executable
IMPLICIT NONE
! Method 1: Define and initialize a string, and hope that the
! compiler doesn't optimize it away.
! Method 2: Read and write to the string somewhere in the program, so
! that it takes a really smart compiler to optimize it away
! Character string for Method 1:
CHARACTER*44 method1 /'Copyright 2002 by Numerical Recipes Software'/
! Character strings for Method 2:
CHARACTER*44 method2 /'Copyright 1998 by Numerical Recipes Software'/
CHARACTER*1 dummy
! Here we read and write to the string; do this once, anywhere
! in the program; a branch unlikely to execute is fine, as long
! as the compiler doesn't think that it *never* executes
dummy(1:1) = method2(1:1)
method2(1:1) = dummy(1:1)
write (*,*) 'Hello, World!'
END PROGRAM
Actually, my (old) version of Visual Fortran (5.0-471) seems never to optimize away either string, no matter what optimization level I invoke. But you should check in an editor that the desired string gets into the executable, in any case, since a future compiler release might suddenly get smarter!
Hope this helps!
Bill P.
hbell
06-09-2002, 09:42 PM
Method 2 worked with Compaq Visual Fortran 6.6A but Method 1 did not.
Thanks!
mstevens
10-08-2004, 03:50 PM
I have a few questions about licensing. I have sent messages to every e-mail address on the NR page. Is there someone I can contact directly?
DjPoke
09-14-2005, 02:21 AM
Is it possible to make a freeware dll of functions made by me wich call some NR functions ? (freeware, no direct acces to NR functions, no source code available for people downloading it) ?
(I would like to make a personnal pitch shift algorithm)
Bill Press
01-03-2007, 10:54 PM
No, unfortunately, if the dll contains NR functions then it is not freeware.
sreeja
11-06-2007, 03:55 AM
How much time taken to get the license.
nekkceb
07-20-2009, 07:31 PM
I just received permissions letters for two of my programs. I have a couple questions, however:
1. There is a specific list of routines in the letter. I think this list is complete for my program as it currently stands, but I may add to it later. Do I have to re-new this permission if I add more routines?
2. I failed to mention that much (though not all...) of the activity involving NR is in dynamic link files (.dll's in windows). Does this affect the licensing? Again, no source is available to users.
William Vetterling
07-23-2009, 04:56 PM
Thanks for your questions. They are pertinent to many readers of this forum.
1. The permission applies just to the software title and the list of Recipes given in the request. If you wish to add to this list, then that would technically be a new permission. If the additions are not major we can often handle this as a modification of the original permission, but it is still necessary to provide you with a new signed letter of permission that includes the modified list.
2. On the question about the DLL, that fact about the code is very relevant, and we should re-evaluate the permission in this case.
The fundamental issue for either an executable application or a DLL is whether the code provides the user with access to the Recipes functionality. More specifically, for a stand-alone executable, such access might be provided by a menu selection, or by an internal programming or scripting environment within the program. (In these cases, we sometimes refer to the situation as a "numerical workbench" usage.) For a DLL, the access would likely be the result of having a callable entry point to a Numerical Recipes function or to an intermediate function that served as an interface to the Recipe (which is to say that either a Recipe or an interface to a Recipe was 'exported', so that it is an externally callable entry in the DLL). Because the means by which such access might occur are different for executable codes and for libraries, it is important for us to know the form of the software at the time we evaluate a permission request.
Uses in which the Recipes are being used internally for numerical analyses, and in which they are not visible, callable, selectable or otherwise exposed to the user, are generally eligible the free permissions for use, provided that you request it from us in advance of any distribution. Uses in which the algorithms need to be made accessible as described above, are not eligible for free permissions. In some cases, it may be possible to license the use for a fee, but those who want to avoid this kind of expense you should consider replacing the Recipes with public domain codes, such as those found at www.netlib.org.
nekkceb
08-02-2009, 10:11 PM
Thanks for the reply. I think my license is still valid -- my .DLL is quite dependent on the .exe, i.e. it is unlikely it could ever be used outside that context. Also, there is no user interface element that allows users to choose NR routines. They are deeply embedded in code and cannot be altered by user choice of any kind.
If I add to my list of routines used, i will be sure to let you know.
teuben
09-14-2012, 11:25 AM
As bad as it is to distribute code whicih depends on NR code, it is more complicate that I need those to be in double precision, and instruct my clients how to do this. This has proven to be not easy, as just replacing REAL by DOUBLE PRECISION (e.g. the unix tool 'sed' could do this) is not working out of the box. My approach would be to distribute the unix "diff"'s and have the clients apply the unix "patch" to their original source and obtain the version that properly links with our code.
I hope I'm not getting any lawyers on my back with this approach, but want to be clarified if this is ok to provide
clients with a patch script of this nature.
An example how my linmin_dbl.f differs from linmin.for.
% diff linmin.for linmin_dbl.f
3c3
< REAL fret,p(n),xi(n),TOL
---
> DOUBLE PRECISION fret,p(n),xi(n),TOL
7c7,8
< REAL ax,bx,fa,fb,fx,xmin,xx,pcom(NMAX),xicom(NMAX),bren t
---
> DOUBLE PRECISION ax,bx,fa,fb,fx,xmin,xx,pcom(NMAX),xicom(NMAX)
> DOUBLE PRECISION brent
Martin Harper
10-31-2013, 08:58 AM
Good morning,
I have used the contact form to request an Institutional subscription for commercial use/distribution of code within our system.
I have not yet received a response (been approx 2 weeks).
Also, the posts on the forum don't seem to be recent. Can anyone advise if this site is still functional and how to get a commercial use Instituional Subscryption?
Any help appreciated.
Many thanks
M Harper