@@ -534,10 +534,11 @@ mod math {
534534
535535 if let Some ( int_item) = item. downcast_ref :: < PyInt > ( )
536536 && let Ok ( b) = int_item. as_bigint ( ) . try_into ( ) as Result < i64 , _ >
537- && let Some ( product) = int_result. checked_mul ( b) {
538- int_result = product;
539- continue ;
540- }
537+ && let Some ( product) = int_result. checked_mul ( b)
538+ {
539+ int_result = product;
540+ continue ;
541+ }
541542
542543 // Overflow or non-int: restore to PyObject and continue
543544 obj_result = Some ( vm. ctx . new_int ( int_result) . into ( ) ) ;
@@ -590,10 +591,11 @@ mod math {
590591 continue ;
591592 }
592593 if let Some ( i) = item. downcast_ref :: < PyInt > ( )
593- && let Ok ( v) = i. as_bigint ( ) . try_into ( ) as Result < i64 , _ > {
594- flt_result *= v as f64 ;
595- continue ;
596- }
594+ && let Ok ( v) = i. as_bigint ( ) . try_into ( ) as Result < i64 , _ >
595+ {
596+ flt_result *= v as f64 ;
597+ continue ;
598+ }
597599
598600 // Non-float/int: restore and continue with generic path
599601 obj_result = Some ( vm. ctx . new_float ( flt_result) . into ( ) ) ;
@@ -854,11 +856,13 @@ mod math {
854856
855857 // Fast path: n fits in i64
856858 if let Some ( ni) = n_big. to_i64 ( )
857- && ni >= 0 && ki > 1 {
858- let result = pymath:: math:: integer:: perm ( ni, Some ( ki as i64 ) )
859- . map_err ( |_| vm. new_value_error ( "perm() error" ) ) ?;
860- return Ok ( result. into ( ) ) ;
861- }
859+ && ni >= 0
860+ && ki > 1
861+ {
862+ let result = pymath:: math:: integer:: perm ( ni, Some ( ki as i64 ) )
863+ . map_err ( |_| vm. new_value_error ( "perm() error" ) ) ?;
864+ return Ok ( result. into ( ) ) ;
865+ }
862866
863867 // BigInt path: use perm_bigint
864868 let result = pymath:: math:: perm_bigint ( n_big, ki) ;
@@ -881,25 +885,26 @@ mod math {
881885
882886 // Fast path: n fits in i64
883887 if let Some ( ni) = n_big. to_i64 ( )
884- && ni >= 0 {
885- // k overflow or k > n means result is 0
886- let ki = match k_big. to_i64 ( ) {
887- Some ( k) if k >= 0 && k <= ni => k,
888- _ => return Ok ( BigInt :: from ( 0u8 ) ) ,
889- } ;
890- // Apply symmetry: use min(k, n-k)
891- let ki = ki. min ( ni - ki) ;
892- if ki > 1 {
893- let result = pymath:: math:: integer:: comb ( ni, ki)
894- . map_err ( |_| vm. new_value_error ( "comb() error" ) ) ?;
895- return Ok ( result. into ( ) ) ;
896- }
897- // ki <= 1 cases
898- if ki == 0 {
899- return Ok ( BigInt :: from ( 1u8 ) ) ;
900- }
901- return Ok ( n_big. clone ( ) ) ; // ki == 1
888+ && ni >= 0
889+ {
890+ // k overflow or k > n means result is 0
891+ let ki = match k_big. to_i64 ( ) {
892+ Some ( k) if k >= 0 && k <= ni => k,
893+ _ => return Ok ( BigInt :: from ( 0u8 ) ) ,
894+ } ;
895+ // Apply symmetry: use min(k, n-k)
896+ let ki = ki. min ( ni - ki) ;
897+ if ki > 1 {
898+ let result = pymath:: math:: integer:: comb ( ni, ki)
899+ . map_err ( |_| vm. new_value_error ( "comb() error" ) ) ?;
900+ return Ok ( result. into ( ) ) ;
902901 }
902+ // ki <= 1 cases
903+ if ki == 0 {
904+ return Ok ( BigInt :: from ( 1u8 ) ) ;
905+ }
906+ return Ok ( n_big. clone ( ) ) ; // ki == 1
907+ }
903908
904909 // BigInt path: n doesn't fit in i64
905910 // Apply symmetry: k = min(k, n - k)
0 commit comments