[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