@@ -6,13 +6,13 @@ use libm::support::{Float, MinInt};
66use  crate :: domain:: get_domain; 
77use  crate :: op:: OpITy ; 
88use  crate :: run_cfg:: { int_range,  iteration_count} ; 
9- use  crate :: { CheckCtx ,  MathOp ,  linear_ints,  logspace} ; 
9+ use  crate :: { CheckCtx ,  GeneratorKind ,   MathOp ,  linear_ints,  logspace} ; 
1010
1111/// Generate a sequence of inputs that eiher cover the domain in completeness (for smaller float 
1212/// types and single argument functions) or provide evenly spaced inputs across the domain with 
1313/// approximately `u32::MAX` total iterations. 
1414pub  trait  SpacedInput < Op >  { 
15-     fn  get_cases ( ctx :  & CheckCtx )  -> ( impl  Iterator < Item  = Self >  + Send ,  u64 ) ; 
15+     fn  get_cases ( ctx :  CheckCtx )  -> ( impl  Iterator < Item  = Self >  + Send ,  u64 ) ; 
1616} 
1717
1818/// Construct an iterator from `logspace` and also calculate the total number of steps expected 
@@ -87,8 +87,8 @@ macro_rules! impl_spaced_input {
8787        where 
8888            Op :  MathOp <RustArgs  = Self ,  FTy  = $fty>, 
8989        { 
90-             fn  get_cases( ctx:  & CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
91-                 let  max_steps0 = iteration_count( ctx,  0 ) ; 
90+             fn  get_cases( ctx:  CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
91+                 let  max_steps0 = iteration_count( & ctx,  0 ) ; 
9292                // `f16` and `f32` can have exhaustive tests. 
9393                match  value_count:: <Op :: FTy >( )  { 
9494                    Some ( steps0)  if  steps0 <= max_steps0 => { 
@@ -97,7 +97,7 @@ macro_rules! impl_spaced_input {
9797                        ( EitherIter :: A ( iter0) ,  steps0) 
9898                    } 
9999                    _ => { 
100-                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( ctx,  0 ,  max_steps0) ; 
100+                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( & ctx,  0 ,  max_steps0) ; 
101101                        let  iter0 = iter0. map( |v| ( v, ) ) ; 
102102                        ( EitherIter :: B ( iter0) ,  steps0) 
103103                    } 
@@ -109,9 +109,9 @@ macro_rules! impl_spaced_input {
109109        where 
110110            Op :  MathOp <RustArgs  = Self ,  FTy  = $fty>, 
111111        { 
112-             fn  get_cases( ctx:  & CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
113-                 let  max_steps0 = iteration_count( ctx,  0 ) ; 
114-                 let  max_steps1 = iteration_count( ctx,  1 ) ; 
112+             fn  get_cases( ctx:  CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
113+                 let  max_steps0 = iteration_count( & ctx,  0 ) ; 
114+                 let  max_steps1 = iteration_count( & ctx,  1 ) ; 
115115                // `f16` can have exhaustive tests. 
116116                match  value_count:: <Op :: FTy >( )  { 
117117                    Some ( count)  if  count <= max_steps0 && count <= max_steps1 => { 
@@ -120,8 +120,8 @@ macro_rules! impl_spaced_input {
120120                        ( EitherIter :: A ( iter) ,  count. checked_mul( count) . unwrap( ) ) 
121121                    } 
122122                    _ => { 
123-                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( ctx,  0 ,  max_steps0) ; 
124-                         let  ( iter1,  steps1)  = logspace_steps:: <Op >( ctx,  1 ,  max_steps1) ; 
123+                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( & ctx,  0 ,  max_steps0) ; 
124+                         let  ( iter1,  steps1)  = logspace_steps:: <Op >( & ctx,  1 ,  max_steps1) ; 
125125                        let  iter = iter0. flat_map( move |first| { 
126126                            iter1. clone( ) . map( move |second| ( first,  second) ) 
127127                        } ) ; 
@@ -136,10 +136,10 @@ macro_rules! impl_spaced_input {
136136        where 
137137            Op :  MathOp <RustArgs  = Self ,  FTy  = $fty>, 
138138        { 
139-             fn  get_cases( ctx:  & CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
140-                 let  max_steps0 = iteration_count( ctx,  0 ) ; 
141-                 let  max_steps1 = iteration_count( ctx,  1 ) ; 
142-                 let  max_steps2 = iteration_count( ctx,  2 ) ; 
139+             fn  get_cases( ctx:  CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
140+                 let  max_steps0 = iteration_count( & ctx,  0 ) ; 
141+                 let  max_steps1 = iteration_count( & ctx,  1 ) ; 
142+                 let  max_steps2 = iteration_count( & ctx,  2 ) ; 
143143                // `f16` can be exhaustive tested if `LIBM_EXTENSIVE_TESTS` is incresed. 
144144                match  value_count:: <Op :: FTy >( )  { 
145145                    Some ( count) 
@@ -153,9 +153,9 @@ macro_rules! impl_spaced_input {
153153                        ( EitherIter :: A ( iter) ,  count. checked_pow( 3 ) . unwrap( ) ) 
154154                    } 
155155                    _ => { 
156-                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( ctx,  0 ,  max_steps0) ; 
157-                         let  ( iter1,  steps1)  = logspace_steps:: <Op >( ctx,  1 ,  max_steps1) ; 
158-                         let  ( iter2,  steps2)  = logspace_steps:: <Op >( ctx,  2 ,  max_steps2) ; 
156+                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( & ctx,  0 ,  max_steps0) ; 
157+                         let  ( iter1,  steps1)  = logspace_steps:: <Op >( & ctx,  1 ,  max_steps1) ; 
158+                         let  ( iter2,  steps2)  = logspace_steps:: <Op >( & ctx,  2 ,  max_steps2) ; 
159159
160160                        let  iter = iter0
161161                            . flat_map( move |first| iter1. clone( ) . map( move |second| ( first,  second) ) ) 
@@ -175,10 +175,10 @@ macro_rules! impl_spaced_input {
175175        where 
176176            Op :  MathOp <RustArgs  = Self ,  FTy  = $fty>, 
177177        { 
178-             fn  get_cases( ctx:  & CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
179-                 let  range0 = int_range( ctx,  0 ) ; 
180-                 let  max_steps0 = iteration_count( ctx,  0 ) ; 
181-                 let  max_steps1 = iteration_count( ctx,  1 ) ; 
178+             fn  get_cases( ctx:  CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
179+                 let  range0 = int_range( & ctx,  0 ) ; 
180+                 let  max_steps0 = iteration_count( & ctx,  0 ) ; 
181+                 let  max_steps1 = iteration_count( & ctx,  1 ) ; 
182182                match  value_count:: <Op :: FTy >( )  { 
183183                    Some ( count1)  if  count1 <= max_steps1 => { 
184184                        let  ( iter0,  steps0)  = linear_ints( range0,  max_steps0) ; 
@@ -188,7 +188,7 @@ macro_rules! impl_spaced_input {
188188                    } 
189189                    _ => { 
190190                        let  ( iter0,  steps0)  = linear_ints( range0,  max_steps0) ; 
191-                         let  ( iter1,  steps1)  = logspace_steps:: <Op >( ctx,  1 ,  max_steps1) ; 
191+                         let  ( iter1,  steps1)  = logspace_steps:: <Op >( & ctx,  1 ,  max_steps1) ; 
192192
193193                        let  iter = iter0. flat_map( move |first| { 
194194                            iter1. clone( ) . map( move |second| ( first,  second) ) 
@@ -205,10 +205,10 @@ macro_rules! impl_spaced_input {
205205        where 
206206            Op :  MathOp <RustArgs  = Self ,  FTy  = $fty>, 
207207        { 
208-             fn  get_cases( ctx:  & CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
209-                 let  max_steps0 = iteration_count( ctx,  0 ) ; 
210-                 let  range1 = int_range( ctx,  1 ) ; 
211-                 let  max_steps1 = iteration_count( ctx,  1 ) ; 
208+             fn  get_cases( ctx:  CheckCtx )  -> ( impl  Iterator <Item  = Self >,  u64 )  { 
209+                 let  max_steps0 = iteration_count( & ctx,  0 ) ; 
210+                 let  range1 = int_range( & ctx,  1 ) ; 
211+                 let  max_steps1 = iteration_count( & ctx,  1 ) ; 
212212                match  value_count:: <Op :: FTy >( )  { 
213213                    Some ( count0)  if  count0 <= max_steps0 => { 
214214                        let  ( iter1,  steps1)  = linear_ints( range1,  max_steps1) ; 
@@ -218,7 +218,7 @@ macro_rules! impl_spaced_input {
218218                        ( EitherIter :: A ( iter) ,  count0. checked_mul( steps1) . unwrap( ) ) 
219219                    } 
220220                    _ => { 
221-                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( ctx,  0 ,  max_steps0) ; 
221+                         let  ( iter0,  steps0)  = logspace_steps:: <Op >( & ctx,  0 ,  max_steps0) ; 
222222                        let  ( iter1,  steps1)  = linear_ints( range1,  max_steps1) ; 
223223
224224                        let  iter = iter0. flat_map( move |first| { 
@@ -242,12 +242,11 @@ impl_spaced_input!(f64);
242242impl_spaced_input ! ( f128) ; 
243243
244244/// Create a test case iterator for extensive inputs. Also returns the total test case count. 
245- pub  fn  get_test_cases < Op > ( 
246-     ctx :  & CheckCtx , 
247- )  -> ( impl  Iterator < Item  = Op :: RustArgs >  + Send  + use < ' _ ,  Op > ,  u64 ) 
245+ pub  fn  get_test_cases < Op > ( ctx :  CheckCtx )  -> ( impl  Iterator < Item  = Op :: RustArgs >  + Send ,  u64 ) 
248246where 
249247    Op :  MathOp , 
250248    Op :: RustArgs :  SpacedInput < Op > , 
251249{ 
250+     assert_eq ! ( ctx. gen_kind,  GeneratorKind :: Spaced ) ; 
252251    Op :: RustArgs :: get_cases ( ctx) 
253252} 
0 commit comments