June 18, 2020 Version 2.01 --------------------------- * TVIL_Trilogseries() in trilog.c rewritten to make it more efficient. Thanks to Alexander Voigt for this. July 13, 2018 Version 2.0 ------------------------- * The TVIL_DATA struct has been eliminated; now only TVIL_RESULTs are used. A single call to TVIL_Evaluate does all the work. TVIL_SetParameters has been eliminated. * Permutations of arguments and functions that are allowed by the symmetry of the basis functions are now implemented. See functions TVIL_PermuteResult() and TVIL_InversePerm(), described in README.txt. * A new evaluation method for 3-scale cases (00yzxx (case A), 0xxyzy (case B), 0xyxzy (case C)), based on alternate differential equations, is fully implemented. Such cases are auto-detected, including permutations thereof that are allowed by the symmetry properties of the basis functions. The user can force evaluation according to the default procedure via a call to TVIL_SetForceDefault, though this is recommended only for testing. * Evaluation of subsets of the basis functions (modes EFG and EF) are now implemented. Functions TVIL_EvaluateEFG() and TVIL_EvaluateEF() implement these modes, and are described in README.txt. Sample programs are provided that illustrate their use (sampleEFG.c and sampleEF.c), and the test program can also be compiled to use either mode if desired. See the Makefile for details. * Result printing simplified; there is now one set of routines, TVIL_Print/WriteData, and print style (vanilla or Mathematica) is controlled by TVIL_SetPrintStyle. Subset cases print automtically. * Code to determine the a parameter moved to a subroutine. * TVIL_SetParams* now returns a pointer to the function whose parameters were set. * TVIL_GetFunctions and TVIL_GetBoldFunction work with subset cases. * Bugfix: any string starting with H is now valid for Huvwxyz when calling TVIL_Get/BoldFunction(). * Functions TVIL_d*dt() now take pointer-to-function as argument, not a function. * Rebuilt TVIL_rk6 and TVIL_rk5 to allow arbitrary subsets of the functions to be evaluated. * Added global U,V,W,X,Y,Z variables and associated logs; we now evaluate clogs only once per Runge-Kutta stage. (Worth about 15% speedup.) * Bugfix in Set_aParameter: local variables were masking the globals. * New function TVIL_TestDelta(), used to test whether Delta=0. * Function TVIL_Phi() updated to make it somewhat more resistant to roundoff error in pathological cases where two of the arguments are equal and the other two are extremely close to being equal (for example, ./3vil 0.00000000001 0 2 1 1 1 1). * In TVIL_Atest() the test for TVIL_Phi() being small has been relaxed. * In dilog.c, CLZcoeffs[] now local local rather than global. Similarly changed trilog.c to make CLZcoeffs_trilog[] local rather than global. * All global variables renamed with leading TVIL_ to avoid collisions. * Function TVIL_Fanalytic() added. * Function TVIL_ResetStepSizeParamDefaults() added. * Added subdirectories 3scaleA, 3scaleB, 3scaleC to the TestData directory. July 30, 2016 Version 0.4 ------------------------- * Added GetFunctions (), with permutations on identifier strings allowed * check of basecalc inputs for actual numericalness * simpler cHd1 root evaluation * a = 2*Max(u,v,w,x,y,z) now * I2 analytic functions now take complex mass^2 args * Put ReAxisOk and poleAt1 into the struct; evaluated in SetParameters * Added optimization logic for pole near t=1 * I2 functions updated with latest Mathematica code; ordering problem solved * Numerical I2 results replaced by analytic results at end of evaluation July 15, 2016 Version 0.3 ----------------------- * New dHdt implemented July 1, 2016 Version 0.2 ----------------------- * t -> ln(1-t) implemented * All analytic functions added and debugged June 9, 2016 Version 0.1 ----------------------- * Basic functionality.