@@ -53,10 +53,8 @@ fn workload_sum_of_squares() -> Workload {
5353 ] ) ;
5454
5555 // sum (or difference) of squares (of trig functions)
56- let t_sqr = Workload :: new ( [ "(sqr t)" ] )
57- . plug ( "t" , & Workload :: new ( [ "(op v)" ] ) )
58- . plug ( "op" , & op)
59- . plug ( "v" , & var) ;
56+ let t_simpl = Workload :: new ( [ "(op t)" ] ) . plug ( "op" , & op) . plug ( "t" , & var) ;
57+ let t_sqr = Workload :: new ( [ "(sqr t)" ] ) . plug ( "t" , & t_simpl) ;
6058 let t_sos = Workload :: new ( [ "(+ t t)" , "(- t t)" ] ) . plug ( "t" , & t_sqr) ;
6159
6260 workload_symmetry_periodicity ( )
@@ -85,7 +83,7 @@ fn workload_power_reduction() -> Workload {
8583
8684 // squared trig functions with variable arguments
8785 let t_trig = Workload :: new ( [ "(op t)" ] ) . plug ( "op" , & op) . plug ( "t" , & var) ;
88- let t_sqr = Workload :: new ( [ "(* t t)" ] ) . plug ( "t" , & t_trig) ;
86+ let t_sqr = Workload :: new ( [ "(sqr t)" ] ) . plug ( "t" , & t_trig) ;
8987
9088 // trig functions (with possibly shifted arguments, and shifted output)
9189 let t_xform = Workload :: new ( [ "t" , "(- (/ PI 2) t)" , "(+ (/ PI 2) t)" , "(* 2 t)" ] ) . plug ( "t" , & var) ;
@@ -264,52 +262,3 @@ pub fn trig_rules() -> Ruleset<Trig> {
264262
265263 new
266264}
267-
268-
269- #[ test]
270- fn sandbox ( ) {
271-
272- let no_trig_2x = Filter :: Invert ( Box :: new ( Filter :: Or ( vec ! [
273- Filter :: Contains ( "(sin (+ ?a ?a))" . parse( ) . unwrap( ) ) ,
274- Filter :: Contains ( "(cos (+ ?a ?a))" . parse( ) . unwrap( ) ) ,
275- Filter :: Contains ( "(tan (+ ?a ?a))" . parse( ) . unwrap( ) ) ,
276- ] ) ) ) ;
277- let valid_trig = Filter :: Invert ( Box :: new ( Filter :: Contains (
278- "(tan (/ PI 2))" . parse ( ) . unwrap ( ) ,
279- ) ) ) ;
280-
281- let t_ops = Workload :: new ( [ "sin" , "cos" , "tan" ] ) ;
282- let consts = Workload :: new ( [
283- "0" , "(/ PI 6)" , "(/ PI 4)" , "(/ PI 3)" , "(/ PI 2)" , "PI" , "(* PI 2)" ,
284- ] ) ;
285- let app = Workload :: new ( [ "(op v)" ] ) ;
286- let trig_constants = app
287- . clone ( )
288- . plug ( "op" , & t_ops)
289- . plug ( "v" , & consts)
290- . filter ( valid_trig) ;
291-
292- let simple_terms = app. clone ( ) . plug ( "op" , & t_ops) . plug (
293- "v" ,
294- & Workload :: new ( [ "a" , "(~ a)" , "(+ PI a)" , "(- PI a)" , "(+ a a)" ] ) ,
295- ) ;
296-
297- let neg_terms = Workload :: new ( [ "(~ x)" ] ) . plug ( "x" , & simple_terms) ;
298-
299- let squares = Workload :: new ( [ "(sqr x)" ] )
300- . plug ( "x" , & app)
301- . plug ( "op" , & t_ops)
302- . plug ( "v" , & Workload :: new ( [ "a" , "b" ] ) ) ;
303-
304- let add = Workload :: new ( [ "(+ e e)" , "(- e e)" ] ) ;
305-
306- let sum_of_squares = add. plug ( "e" , & squares) ;
307-
308- let wkld1 = trig_constants;
309- let wkld2 = Workload :: Append ( vec ! [ wkld1. clone( ) , simple_terms, neg_terms] ) ;
310- let trimmed_wkld2 = wkld2. clone ( ) . filter ( no_trig_2x) ;
311- let wkld3 = Workload :: Append ( vec ! [ trimmed_wkld2. clone( ) , sum_of_squares. clone( ) ] ) ;
312-
313- let wkld = workload_sum_of_squares ( ) ;
314- assert_eq ! ( wkld. force( ) . len( ) , wkld3. force( ) . len( ) ) ;
315- }
0 commit comments