[Cfp-interest 2861] Re: CFP review of TS-4 and TS-5 revisions
David Hough CFP
pcfp at oakapple.net
Fri Aug 25 09:54:04 PDT 2023
Perhaps this corrected condensation is a better fit for TS-4 -
EXAMPLE
The scaled reduction functions support computing quantities of modest
magnitudes whose intermediate results might well overflow and underflow.
One example is the computation of Clebsch-Gordan coefficients
used to add angular momentum in quantum mechanics.
Expressions for these quantities involve quotients of products of factorials,
and so are prone to intermediate overflow.
As a simplified illustration, consider computing n1!n2!/n3! -
int n1, n2, n3 ;
int i ;
double num1, num2, den1, quot ;
double num1p[n1}, num2p[n2}, den1[n3] ;
long long num1e, num2e, den1e ;
for ( i := 2 ; i <= n1 ; i++ ) {
num1p[i-2] = i ; }
num1 = scaled_prod( n1-1, num1p, &num1e ) ;
for ( i := 2 ; i <= n2 ; i++ ) {
num2p[i-2] = i ; }
num2 = scaled_prod( n2-1, num2p, &num2e ) ;
for ( i := 2 ; i <= n3 ; i++ ) {
den1p[i-2] = i ; }
den1 = scaled_prod( n3-1, den1p, &den1e ) ;
quot = scalb( num1 * num2 / den1, num1e + num2e - den1e) ;
This small part of the Clebsch-Gordan/Wigner computation
is fairly easy to understand as an example.
The other scaled_prodsum and scaled_proddiff functions
accommodate more complicated factors like (x[i]+y[i]) and (x[i]-y[i])
respectively.
More information about the Cfp-interest
mailing list