### If you could add or change one thing about the NAG Library?

2010 is an important year for NAG. We’ll be celebrating our 40th anniversary, which is quite an achievement in the software world. I’ve been able to find a few other software organisations that have also reached 40 – Software AG, Intergraph and Cincom

An anniversary is a great time to reflect on all that’s gone by, honour achievements and remember important milestones but of equal importance, if not more so, it’s a time to look to the future and plan ahead. The NAG Library – the mainstay of NAG’s product portfolio - reaches the dizzy heights of 40 in October 2011. The Library has changed a lot over the years. It was originally a collection of 90 or so routines written in both Algol 60 and Fortran targeted at ICL mainframes. It now features over 1,400 routines and is available on a multitude of platforms, operating systems and programming environments.

So here’s another question for you, assuming you use or have used the NAG Library

*(if you know of any others, please let me know.)*An anniversary is a great time to reflect on all that’s gone by, honour achievements and remember important milestones but of equal importance, if not more so, it’s a time to look to the future and plan ahead. The NAG Library – the mainstay of NAG’s product portfolio - reaches the dizzy heights of 40 in October 2011. The Library has changed a lot over the years. It was originally a collection of 90 or so routines written in both Algol 60 and Fortran targeted at ICL mainframes. It now features over 1,400 routines and is available on a multitude of platforms, operating systems and programming environments.

*How will it change over the next 40 years?*So here’s another question for you, assuming you use or have used the NAG Library

*“If you could add or change one thing about the Library, what would it be?”*
I'd change the naming scheme! Why use c05baf()when you could use lambertw()?

ReplyDeleteFinding a short and understandable name for a relatively easy routine as mentioned above is easy, but how about e.g. optimization routines (chapter E04)? In NAG C Library there exists a dual naming scheme, in which e.g. the name of e04vrc() is nag_opt_sparse_nlp_option_get_integer(). Is this really better and makes programming easier?

ReplyDeleteIn certain environments such as VB you can write your own wrapper for every function/subroutine and name the function however you wish! IMHO the NAG naming scheme is consistent and is the best solution to organize over 1400 numerical routines in one library.

Using descriptive names for the routines is a topic that has been talked about for a while now. I can see the appeal of having descriptions as well as codes. On a practical level I'm not sure how easy it would be to name over 1,400 routines, but that's not saying it couldn't be done?

ReplyDeleteThere might be some middle ground between e04vrc and nag_opt_sparse_nlp_option_get_integer. For example, what about nagopt_spnlpint or similar variations?

ReplyDeleteOf course there are 1400 to name, but other programmers manage the naming task for lots of functions in large applications. Often the more commonly used functions/variables are shorter, the rarer ones get longer names.

Goodnews, well sort of. Rest assured NAG’s technical and commercial teams are aware of this issue. Whilst I can’t pretend we have an overnight fix I can share with you that possible solutions and refinements are being considered. If/when we feel we have a workable improvement to the current scheme rest assured we will be consulting with users.

ReplyDeleteSomething else I would change is to allow more routines to accept array input. For example s15aef (calculates erf(x) ) only accepts one double as input. This is fine when you are coding in C and Fortran but causes overhead when coding in MATLAB or Python.

ReplyDeleteI'd like to see functions such as s15aef accept an array of doubles and return an array of doubles - more in line with how MATLAB does things.

While you are at it you could allow paralleisation for large array calculations via OpenMP.

Yeah, I know, I want a lot but we use a lot of NAG.

A cheap student license for the NAG Toolbox for MATLAB would be nice too. I'm lucky because I work at a University which has a full site license but I sometimes collaborate with people who are not so lucky.

ReplyDeleteI was working with someone in the Netherlands recently and NAG would have definitely helped him if he had access to the toolbox. Instead, I did some mexing for him.

Yes, some kind of cheap licenses for limited sets of routines would definitely help. Students and postdocs I know avoid using NAG routines in their codes because they are unsure if these will be available when they change institutions.

ReplyDeleteI agree with Girish - we have that problem here at Manchester sometimes. It's one of the things holding back wider adoption of the NAG Toolbox for MATLAB for example.

ReplyDeleteWhile at Manchester, A student gets licenses that last a year at a time. When they leave though, their license expires and they can end up unable to run their own code!

The Mathworks sell cheap student licenses. Maybe NAG could too?

This is really good feedback. Thank you Girish and Mike. I'll make sure this is talked about within the group. Serving the student community is a very important part of our work.

ReplyDeleteWe are keen to encourage student usage.

ReplyDeleteAll Universities who have dept or site licences for NAG are allowed to provide students with licences at no additional charge or cost. i.e. A University site licence allows installation of NAG on University owned machines, staff owned machines and student machines.

Of course you are correct there is not a scheme in place for students who are at Universities who do not have dept or site licences. Your request will be considered and no doubt spark a healthy debate.

Systran has been around for 40 years

ReplyDeletehttp://www.systran.co.uk/systran/corporate-profile/translation-technology/systran-40-years-of-mt-innovation