NAGnews 121 | 3 April 2014

Posted on
3 Apr 2014

In this issue

New University of Manchester paper: Testing matrix function algorithms using identities

Former NAG and the University of Manchester Knowledge Transfer Partnership Associate Edvin Deadman and long-standing NAG collaborator, Professor Nicholas Higham have co-authored a new paper "Testing matrix function algorithms using identities". We are proud that both Edvin and Nick have contributed matrix function algorithms to the NAG Library.


Testing Matrix Function Algorithms Using Identities EDVIN DEADMAN, The University of Manchester NICHOLAS J. HIGHAM, The University of Manchester

Algorithms for computing matrix functions are typically tested by comparing the forward error with the product of the condition number and the unit roundoff. The forward error is computed with the aid of a reference solution, typically computed at high precision. An alternative approach is to use functional identities such as the "round trip tests" elog A = A and (A1/p)p = A, as are currently employed in a SciPy test module. We show how a linearized perturbation analysis for a functional identity allows the determination of a maximum residual consistent with backward stability of the constituent matrix function evaluations. Comparison of this maximum residual with a computed residual provides a necessary test for backward stability. We also show how the actual linearized backward error for these relations can be computed. Our approach makes use of Fréchet derivatives and estimates of their norms. Numerical experiments show that the proposed approaches are able both to detect instability and to confirm stability.

To read the paper click here.

Edvin also authored a post relevant to this article on the NAG Blog.

The Wilkinson Prize 2015 - Call for submissions

Every four years NAG, the National Physical Laboratory (NPL) and Argonne National Laboratory award the prestigious Wilkinson Prize in honour of the outstanding contributions of Dr James Hardy Wilkinson to the field of numerical software. The next Wilkinson Prize will be awarded at the International Congress on Industrial and Applied Mathematics (ICIAM) in Beijing.

NAG, NPL and Argonne are committed to encouraging innovative, insightful and original work in numerical software in the same way that Wilkinson inspired many through his work during his career. Wilkinson worked on the Automatic Computing Engine (ACE) while at NPL and later authored numerous papers on his speciality, numerical analysis. He also authored many of the routines for matrix computation in the NAG Library. Details of the Wilkinson Prize including eligibility, rules for submission and selection criteria can be found here.

Mark 24 new functionality spotlight: Best Subset

The new Best Subset (or Subset Selection) included at Mark 24 of the NAG Library is the highlighted functionality in today's NAGnews. The new Mark 24 routines sit within the 'Operations Research' Chapter of the NAG Library.

The two new 'Best Subset' routines are:

  1. Best n subsets of size p (reverse communication) - Given a set of m features and a scoring mechanism for any subset of those features, this routine (H05AAF) selects the best n subsets of size p using a reverse communication branch and bound algorithm.
  2. Best n subsets of size p (direct communication) - Given a set of m features and a scoring mechanism for any subset of those features, this routine (H05ABF) selects the best n subsets of size p using a direct communication branch and bound algorithm.

Read about this new functionality here.

NAG Student Prize: Free pass to Global Derivatives, May 2014, Amsterdam

We would like to remind all students about our "direct award" Student Prize for 2014. The winner of the first award will receive a free pass to the prestigious finance event, Global Derivatives which is taking place this May in Amsterdam.

Prize Details

If you're a student (BSc, MSc, PhD etc) studying mathematical finance or similar you can enter the NAG 'direct award' prize by sending through a summary of your financial math project or research. Your work should include code that uses NAG software. The prize includes a monetary contribution to travel and accommodation.

Students may submit supporting material like their PhD or MSc thesis or published paper to help the competition judges. We recommend your submission includes the following:

  • A statement of the problem with some background putting it into context
  • Description of the computational aspects
  • How NAG software helped with these computational aspects
  • Results of the work
  • Possible further work
  • Copies of code
  • References

If the winning student is unable to attend the Global Derivatives conference NAG will in collaboration with the winning student try to secure passes to other prestigious financial engineering conferences.

Good luck to those that enter!

Submit your work by 30 April 2014 or contact Rachel Foot for more information.

NAG and C++: update from last issue - new examples now available

In the last issue of NAGnews (and in a recent NAG Blog post) we announced the availability of four routines from the NAG Library that could be used in C++ by way of new Wrappers. We are delighted to now offer 14 examples including:

  • Optimization
  • Matrix functions
  • Nearest correlation matrix
  • Quantile analysis
  • Quadrature

We would really like to receive feedback on these so if you'd like to receive the codes in exchange for your thoughts on them then please get in touch via our customer support desk.


Training Courses & Events

Your users, developers and managers can all benefit from NAG's highly regarded training courses. All of the training courses shown have been delivered successfully either from NAG offices or at client premises. Training courses can be tailored to suit your particular requirements and be targeted to novice, intermediate or experienced levels. Specialized mentoring and development programs are also available for HPC managers.

HPC & Software Training NAG Product Training
  • Accelerating Applications with CUDA and OpenCL
  • Algorithmic Differentiation
  • An Introduction to CUDA Programming
  • An Introduction to OpenCL Programming
  • An Introduction to Unified Parallel C (UPC)
  • Coarray Fortran
  • Core Algorithms for High Performance Scientific Computing
  • Debugging, Profiling and Optimizing
  • Developing Parallel Applications for the Intel Xeon Phi
  • Fortran 95
  • Multicore
  • Object-Oriented Programming in Fortran 2003
  • Open MP
  • Parallel I/O
  • Parallel Programming with MPI
  • Scientific Visualisation
  • Using the NAG Library in Fortran
  • Using the NAG Library in C and C++
  • Using the NAG Library in Excel and VBA
  • Using the NAG Library for Java
  • Using the NAG Toolbox for MATLAB
  • Using the NAG Library for Python
  • Multicore Programming and the NAG Library for SMP & Multicore
  • An Introduction to CUDA Programming and the NAG Numerical Routines for GPUs

Examples of tailored training courses

  • Best Practice in HPC Software Development
  • OpenCL introduction for CUDA programmers

For more information about our courses including tailoring a course for your exact needs please email us. NAG will be at the following exhibitions and conferences in April, May and June 2014.

The Best of the Blog

C++ Wrappers for the NAG C Library


Occasionally, we receive requests to make the NAG C Library easier to call from C++. In the past, we found it difficult to build something that would work across all of the code our C++ users write. With the advent of the C++11 standard, many of the key features of the widely used Boost library have been incorporated into the STL, and finally provide a standardized way to address many of the difficulties we have encountered. The code we describe here works with Visual Studios 2010 and later, as well as several different versions of the Intel compiler and gcc.

We have created example wrappers that can serve as templates for creating C++ wrappers around NAG functions. Specifically, the examples now allow the user to:

  1. Pass function pointers, functors, class member functions and lambda functions as callbacks to the NAG Library.
  2. Use raw pointers, smart pointers, STL containers or boost containers to store data and pass these to the NAG Library.

A note: these are NOT a C++ interface, but merely wrappers around the C Library.

Read the full post here.

NAGnews - Past Issues

We provide an online archive of past issues of NAGnews. For editions prior to 2010, please contact us.