We present TaylUR, a Fortran 95 module to automatically compute the numerical values of a complex-valued function's derivatives with respect to several variables up to an arbitrary order in each variable, but excluding mixed derivatives. Arithmetic operators and Fortran intrinsics are overloaded to act correctly on objects of a defined type taylor, which encodes a function along with its first few derivatives with respect to the user-defined independent variables. Derivatives of products and composite functions are computed using Leibniz's rule and Faà di Bruno's formula. TaylUR makes heavy use of operator overloading and other Fortran 95 features such as elemental functions. Program summary Program title: TaylUR Catalogue identifier:ADXR_v1_0 Program summary URL: http://cpc.cs.qub.ac.uk/summaries/ADXR_v1_0 Program obtainable from: CPC Program Library, Queen's University of Belfast, N. Ireland Licensing provisions:none Programming language:Fortran 95 Computer:Any computer with a conforming Fortran 95 compiler Operating system:Any system with a conforming Fortran 95 compiler No. of lines in distributed program, including test data, etc.:6286 No. of bytes in distributed program, including test data, etc:14 994 Distribution format:tar.gz Nature of problem:Problems that require potentially high orders of derivatives with respect to some variables, such as e.g. expansions of Feynman diagrams in particle masses in perturbative Quantum Field Theory, and which cannot be treated using existing Fortran modules for automatic differentiation [C.W. Straka, ADF95: Tool for automatic differentiation of a FORTRAN code designed for large numbers of independent variables, Comput. Phys. Comm. 168 (2005) 123–139, arXiv:cs.MS/0503014; S. Stamatiadis, R. Prosmiti, S.C. Farantos, auto_deriv: Tool for automatic differentiation of a FORTRAN code, Comput. Phys. Comm. 127 (2000) 343–355]. Solution method:Arithmetic operators and Fortran intrinsics are overloaded to act correctly on objects of a defined type taylor, which encodes a function along with its first few derivatives with respect to the user-defined independent variables. Derivatives of products and composite functions are computed using Leibniz's rule and Faà di Bruno's formula. Restrictions:Memory and CPU time constraints may restrict the number of variables and Taylor expansion order that can be achieved. Loss of numerical accuracy due to cancellation may become an issue at very high orders. Unusual features:No mixed higher-order derivatives are computed. The complex conjugation operation assumes all independent variables to be real. Running time:The running time of TaylUR operations depends linearly on the number of variables. Its dependence on the Taylor expansion order varies from linear (for linear operations) through quadratic (for multiplication) to exponential (for elementary function calls).
Read full abstract