@@ -57,7 +57,7 @@ impl Torsion {
5757 /// # Computation
5858 ///
5959 /// $$ V_{half} = V / 2, \quad n\phi_0 = n \cdot \phi_0 \cdot \pi / 180 $$
60- /// $$ \cos( n\phi_0) = \cos(n\phi_0), \quad \sin( n\phi_0) = \sin(n\phi_0) $$
60+ /// $$ \cos_{ n\phi_0} = \cos(n\phi_0), \quad \sin_{ n\phi_0} = \sin(n\phi_0) $$
6161 #[ inline( always) ]
6262 pub fn precompute < T : Real > ( v_barrier : T , n : u8 , phi0_deg : T ) -> ( T , u8 , T , T ) {
6363 let deg_to_rad = T :: pi ( ) / T :: from ( 180.0 ) ;
@@ -218,26 +218,23 @@ mod tests {
218218 mod torsion {
219219 use super :: * ;
220220
221- const V_HALF : f64 = 2.5 ; // V/2 = 2.5 kcal/mol
221+ const V : f64 = 5.0 ;
222+ const V_HALF : f64 = V / 2.0 ;
222223
223224 fn params_n1 ( ) -> ( f64 , u8 , f64 , f64 ) {
224- // n=1, phi0=0 => cos(0)=1, sin(0)=0
225- ( V_HALF , 1 , 1.0 , 0.0 )
225+ Torsion :: precompute ( V , 1 , 0.0 )
226226 }
227227
228228 fn params_n2 ( ) -> ( f64 , u8 , f64 , f64 ) {
229- // n=2, phi0=π => cos(2π)=1, sin(2π)=0
230- ( V_HALF , 2 , 1.0 , 0.0 )
229+ Torsion :: precompute ( V , 2 , 0.0 )
231230 }
232231
233232 fn params_n3 ( ) -> ( f64 , u8 , f64 , f64 ) {
234- // n=3, phi0=0 => cos(0)=1, sin(0)=0
235- ( V_HALF , 3 , 1.0 , 0.0 )
233+ Torsion :: precompute ( V , 3 , 0.0 )
236234 }
237235
238236 fn params_n4 ( ) -> ( f64 , u8 , f64 , f64 ) {
239- // n=4, phi0=0 => cos(0)=1, sin(0)=0
240- ( V_HALF , 4 , 1.0 , 0.0 )
237+ Torsion :: precompute ( V , 4 , 0.0 )
241238 }
242239
243240 // --------------------------------------------------------------------
@@ -263,7 +260,7 @@ mod tests {
263260 let phi = PI / 3.0 ;
264261 let ( cos_phi, sin_phi) = ( phi. cos ( ) , phi. sin ( ) ) ;
265262 let p64 = params_n2 ( ) ;
266- let p32 = ( V_HALF as f32 , 2u8 , 1.0f32 , 0.0f32 ) ;
263+ let p32 = Torsion :: precompute ( V as f32 , 2 , 0.0f32 ) ;
267264
268265 let e64 = Torsion :: energy ( cos_phi, sin_phi, p64) ;
269266 let e32 = Torsion :: energy ( cos_phi as f32 , sin_phi as f32 , p32) ;
@@ -302,7 +299,7 @@ mod tests {
302299
303300 #[ test]
304301 fn stability_high_periodicity ( ) {
305- let p = ( V_HALF , 6u8 , 1.0 , 0.0 ) ;
302+ let p = Torsion :: precompute ( V , 6 , 0.0 ) ;
306303 let phi = PI / 5.0 ;
307304 let result = Torsion :: compute ( phi. cos ( ) , phi. sin ( ) , p) ;
308305
@@ -398,7 +395,7 @@ mod tests {
398395
399396 #[ test]
400397 fn precompute_values_n3 ( ) {
401- let ( v_half, n, cos_n_phi0, sin_n_phi0) = Torsion :: precompute ( V_HALF * 2.0 , 3 , 0.0 ) ;
398+ let ( v_half, n, cos_n_phi0, sin_n_phi0) = Torsion :: precompute ( V , 3 , 0.0 ) ;
402399 assert_relative_eq ! ( v_half, V_HALF , epsilon = 1e-14 ) ;
403400 assert_eq ! ( n, 3 ) ;
404401 assert_relative_eq ! ( cos_n_phi0, 1.0 , epsilon = 1e-10 ) ;
@@ -407,8 +404,8 @@ mod tests {
407404
408405 #[ test]
409406 fn precompute_round_trip ( ) {
410- let p = Torsion :: precompute ( 10.0 , 3 , 180 .0) ;
411- let e = Torsion :: energy ( - 1.0 , 0.0 , p) ;
407+ let p = Torsion :: precompute ( V , 3 , 0 .0) ;
408+ let e = Torsion :: energy ( 1.0 , 0.0 , p) ;
412409 assert_relative_eq ! ( e, 0.0 , epsilon = 1e-10 ) ;
413410 }
414411 }
0 commit comments