-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfpoptimizer.cc
11763 lines (11760 loc) · 143 KB
/
fpoptimizer.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/***************************************************************************\
|* Function Parser for C++ v4.5 *|
|*-------------------------------------------------------------------------*|
|* Function optimizer *|
|*-------------------------------------------------------------------------*|
|* Copyright: Joel Yliluoma *|
|* *|
|* This library is distributed under the terms of the *|
|* GNU Lesser General Public License version 3. *|
|* (See lgpl.txt and gpl.txt for the license text.) *|
\***************************************************************************/
/* NOTE:
This file contains generated code (from the optimizer sources) and is
not intended to be modified by hand. If you want to modify the optimizer,
download the development version of the library.
*/
#include "fpconfig.hh"
#ifdef FP_SUPPORT_OPTIMIZER
#include "fparser.hh"
#include "extrasrc/fptypes.hh"
#include "extrasrc/fpaux.hh"
#define l64 y91 a),
#define l54 if(n5 iK3
#define l44 ,{ReplaceParams,
#define l34 cTan iO
#define l24 "Found "
#define l14 ,cPow,
#define l04 stackpos
#define iZ3 sim.nY 1,
#define iY3 ,tree,info
#define iX3 "dup(%u) "
#define iW3 "%d, cost "
#define iV3 "PUSH "i13(
#define iU3 "immed "<<
#define iT3 mFuncParsers
#define iS3 e62{assert
#define iR3 stderr
#define iQ3 sep2=" "
#define iP3 FPHASH_CONST
#define iO3 .SetParamsMove(
#define iN3 cache_needed[
#define iM3 fprintf
#define iL3 ::cout<<"Applying "
#define iK3 HANDLE_UNARY_CONST_FUNC
#define iJ3 1)i61){
#define iI3 c_count
#define iH3 s_count
#define iG3 2)lS 2*
#define iF3 tmp.yH1
#define iE3 tmp2.nJ
#define iD3 ,tZ 2,
#define iC3 (p0 n51&&
#define iB3 else nM
#define iA3 max.val
#define i93 eK2 if(
#define i83 tree c9
#define i73 sim.x61
#define i63 ].swap(
#define i53 codes[b
#define i43 whydump
#define i33 );}case
#define i23 :if(eQ3
#define i13 ;DumpTree
#define i03 :{lX1 r
#define tZ3 nparams
#define tY3 cLog iO
#define tX3 l4 16,1,
#define tW3 l4 0,1,
#define tV3 0x12 nH
#define tU3 ,0,0x16},{
#define tT3 nQ 0,
#define tS3 cAbs nQ
#define tR3 false;}
#define tQ3 nE1 cF1
#define tP3 xF1++b)
#define tO3 =false;
#define tN3 {data->
#define tM3 info.
#define tL3 b.Value)
#define tK3 b.Opcode
#define tJ3 ,tB info
#define tI3 tree xD
#define tH3 xD cMul);
#define tG3 ParamHolder
#define tF3 size()
#define tE3 .second
#define tD3 ]tE3
#define tC3 ].first
#define tB3 Ne_Mask
#define tA3 Gt_Mask
#define t93 Lt_Mask
#define t83 opcode,
#define t73 resize(
#define t63 t33 nC1;
#define t53 xD cond nC
#define t43 );}else
#define t33 lE2 a)
#define t23 AddFrom(
#define t13 max.known
#define t03 =fp_pow(
#define eZ3 (tree)!=
#define eY3 );if(
#define eX3 public:
#define eW3 pclone
#define eV3 Others
#define eU3 --cN1.
#define eT3 cOr,l6
#define eS3 newpow
#define eR3 if(p0 yN
#define eQ3 &*(*x5 n71){
#define eP3 ,lT 1,0,
#define eO3 lE2 1)
#define eN3 (op1==
#define eM3 change
#define eL3 (count
#define eK3 133,2,
#define eJ3 Needs
#define eI3 byteCode
#define eH3 (p1 nC1
#define eG3 lS1 nC==
#define eF3 cLog2by
#define eE3 factor_t
#define eD3 (*x5)[0].info
#define eC3 tree nC1
#define eB3 value1
#define eA3 Finite
#define e93 fp_mod(
#define e83 )const
#define e73 (e83{
#define e63 else{if(
#define e53 xK());nD
#define e43 TreeCountItem
#define e33 if(op==
#define e23 yN val)<
#define e13 p yN val
#define e03 c9 ifp2
#define cZ3 cAbsNot
#define cY3 stackptr
#define cX3 cLog);xL
#define cW3 switch(tM
#define cV3 p1 cK p1);
#define cU3 );p1 c9 ifp1
#define cT3 .empty()
#define cS3 opcodes
#define cR3 did_muli
#define cQ3 xD data.
#define cP3 &Value){
#define cO3 yH const
#define cN3 used[b]
#define cM3 sizeof(
#define cL3 cAbsIf,
#define cK3 cNotNot,
#define cJ3 18,2 eN1
#define cI3 c22 iE,
#define cH3 450998,
#define cG3 cAtan2,
#define cF3 cExp2 nQ
#define cE3 lJ 2},0,
#define cD3 middle2
#define cC3 ::string
#define cB3 fp_equal(
#define cA3 ;if(cB3
#define c93 (iE2 l8 1)xC1
#define c83 FP_GetOpcodeName(
#define c73 default:
#define c63 n31;case
#define c53 tG));nV
#define c43 range nJ3
#define c33 range<yN2
#define c23 range xK
#define c13 Ge0Lt1
#define c03 Gt0Le1
#define yZ3 cAdd lS2
#define yY3 ==cOr tE2
#define yX3 IsLogicalValue y91
#define yW3 cAbsIf)
#define yV3 iterator
#define yU3 begin();
#define yT3 TreeSet
#define yS3 parent
#define yR3 insert(i
#define yQ3 newrel
#define yP3 for iJ nS
#define yO3 ;tree tK2
#define yN3 ;nV l5::
#define yM3 ;for iA1 a=
#define yL3 param.
#define yK3 ¶m=*
#define yJ3 break;l73
#define yI3 xE lT 2,
#define yH3 ;}static yU1
#define yG3 ::ByteCodeSynth xK
#define yF3 break;}
#define yE3 synth lO2
#define yD3 synth.xM
#define yC3 b_needed
#define yB3 cachepos
#define yA3 half=
#define y93 ,iB,1,l51+1);
#define y83 131,4,1,
#define y73 131,8,1,
#define y63 4,1,2,1,
#define y53 )n31 lH
#define y43 ,1,562 nP
#define y33 ){case
#define y23 (yL3
#define y13 ){switch(
#define y03 (cond yV
#define xZ3 {i31 lE
#define xY3 template lL
#define xX3 iY2 tF3
#define xW3 template lX
#define xV3 ::vector
#define xU3 FindPos(
#define xT3 src_pos
#define xS3 reserve(
#define xR3 nJ1 void
#define xQ3 treeptr
#define xP3 tA1 void
#define xO3 ImmedTag
#define xN3 a,const
#define xM3 RefCount
#define xL3 Birth();
#define xK3 typename
#define xJ3 7168,
#define xI3 cost_t
#define xH3 fpdata
#define xG3 middle
#define xF3 };enum
#define xE3 tG1 1))){
#define xD3 sqrt_cost
#define xC3 const int
#define xB3 maxValue1
#define xA3 minValue1
#define x93 maxValue0
#define x83 minValue0
#define x73 ValueType
#define x63 yN n3 0),
#define x53 =true;lI2
#define x43 yK known
#define x33 yK n3 0),
#define x23 abs_mul
#define x13 l8 a));
#define x03 pos_set
#define nZ3 ContainsOtherCandidates
#define nY3 goto cY
#define nX3 l14 xV1
#define nW3 t2=!t2;}
#define nV3 bool t2 tO3
#define nU3 (yK val)
#define nT3 result
#define nS3 .tL1 n]
#define nR3 1)tG1 1));
#define nQ3 nT3 yN known
#define nP3 nT3 n51
#define nO3 ),child);
#define nN3 mulgroup)
#define nM3 nP3 tO3 if(
#define nL3 nT3 yN val
#define nK3 nT3 tF2
#define nJ3 xK nT3
#define nI3 const std::eT
#define nH3 const char*
#define nG3 nE3 IsNever nV2
#define nF3 nE3 IsAlways;if(
#define nE3 ))return
#define nD3 y3 cAdd);
#define nC3 subtree
#define nB3 invtree
#define nA3 MakeHash(
#define n93 yR false;
#define n83 rulenumit
#define n73 cAnd l3
#define n63 282870 nP
#define n53 ,tree nX
#define n43 ,1,538 nP
#define n33 cAnd,l6
#define n23 MakeEqual
#define n13 MakeTrue,
#define n03 newbase
#define lZ3 branch1op
#define lY3 branch2op
#define lX3 overlap
#define lW3 nE1 c9 y6
#define lV3 truth_b
#define lU3 truth_a
#define lT3 if y91 0)
#define lS3 found_dup
#define lR3 (mulgroup
#define lQ3 cH1 eJ&
#define lP3 rangeutil
#define lO3 Plan_Has(
#define lN3 StackMax)
#define lM3 ;if(half
#define lL3 ;}void
#define lK3 cGreater,
#define lJ3 ,cGreater
#define lI3 )lL3
#define lH3 nT3 xQ
#define lG3 const xA2
#define lF3 namespace
#define lE3 ByteCode[
#define lD3 inverted
#define lC3 IsNever:
#define lB3 .known&&
#define lA3 ==cNot||
#define l93 iftree
#define l83 if(i01==
#define l73 }switch(
#define l63 depcodes
#define l53 explicit
#define l43 l2 16 eI
#define l33 l91 2,1,
#define l23 cCosh nQ
#define l13 n91 1,
#define l03 VarBegin
#define iZ2 Params[a].
#define iY2 Params.
#define iX2 ].data);
#define iW2 PlusInf
#define iV2 Value_t
#define iU2 ;iV2
#define iT2 (nT3
#define iS2 synth);
#define iR2 lJ2 apos==
#define iQ2 default_function_handling
#define iP2 xD i01);
#define iO2 tE3)
#define iN2 begin(),
#define iM2 cond_add
#define iL2 cond_mul
#define iK2 cond_and
#define iJ2 ){eJ r;r xD
#define iI2 func lL1
#define iH2 const eH
#define iG2 bool eA1
#define iF2 unsigned
#define iE2 leaf1
#define iD2 costree
#define iC2 sintree
#define iB2 leaf_count
#define iA2 sub_params
#define i92 tG1-1)))xC
#define i82 printf(
#define i72 swap(tmp);
#define i62 cbrt_count
#define i52 sqrt_count
#define i42 ,std::cout
#define i32 pcall_tree
#define i22 after_powi
#define i12 GetHash().
#define i02 *x5 n71,info
#define tZ2 eQ1=0;a eX2
#define tY2 eQ1;if t51
#define tX2 grammar
#define tW2 cCos iO
#define tV2 l14 l2 0,2,
#define tU2 cEqual eW1
#define tT2 0x12},{{3,
#define tS2 cNeg,lT 1,
#define tR2 ,bool abs)
#define tQ2 sim.Eat(
#define tP2 .what nU1
#define tO2 tJ2 nT3(
#define tN2 ,n42 l2 c22
#define tM2 if y91 1)i61&&
#define tL2 ;range.xE2
#define tK2 .DelParam(
#define tJ2 ){iV2
#define tI2 nR tJ2 tmp=
#define tH2 );nD lC
#define tG2 iC3 p0 tF2>=x22
#define tF2 .min.val
#define tE2 )?0:1))l7
#define tD2 .n_int_sqrt
#define tC2 ;}else{x5=new
#define tB2 (half&63)-1;
#define tA2 ),0},{
#define t92 ),Value
#define t82 data;data.
#define t72 MakeNEqual
#define t62 (exponent
#define t52 Dump(std::
#define t42 isInteger(
#define t32 Comparison
#define t22 needs_flip
#define t12 value]
#define t02 ~size_t(0)
#define eZ2 xJ1 xS+1);
#define eY2 TopLevel)
#define eX2 <xV;++a)
#define eW2 }}return
#define eV2 vector<bool>
#define eU2 *)&*start_at;
#define eT2 Rule&rule,
#define eS2 >::res,b8<
#define eR2 continue;}
#define eQ2 c9 tree);
#define eP2 mul_item
#define eO2 innersub
#define eN2 cbrt_cost
#define eM2 best_cost
#define eL2 fp_min(yL
#define eK2 tree t31);}
#define eJ2 tree))cZ
#define eI2 condition
#define eH2 per_item
#define eG2 item_type
#define eF2 first2
#define eE2 l4 18,1,
#define eD2 lJ 1},0,
#define eC2 Decision
#define eB2 not_tree
#define eA2 group_by
#define e92 exponent=
#define e82 ->second
#define e72 :xL iV2(
#define e62 eJ&tree)
#define e52 targetpos
#define e42 ParamSpec
#define e32 rhs.hash2;}
#define e22 rhs.hash1
#define e12 struct
#define e02 Forget()
#define cZ2 &&cond e8))
#define cY2 source_tree
#define cX2 nC==cLog2&&
#define cW2 ,eL1 0x1 nH
#define cV2 )lS 3*3*
#define cU2 (tK==eA3&&
#define cT2 );yF3
#define cS2 ;iB.Remember(
#define cR2 <tW,xI3>
#define cQ2 );sim.nY 2,
#define cP2 )continue
#define cO2 CodeTree lW
#define cN2 p1_evenness
#define cM2 isNegative(
#define cL2 yN known&&(
#define cK2 neg_set
#define cJ2 cNop,cNop}}
#define cI2 cTanh,cNop,
#define cH2 NewHash
#define cG2 >e12 cA<
#define cF2 matches
#define cE2 .match_tree
#define cD2 cH1 void*)&
#define cC2 cSin iO
#define cB2 cTan nQ
#define cA2 ,cLog nQ
#define c92 cCos nQ
#define c82 long value
#define c72 (std::move(
#define c62 (xX l8 a)xF
#define c52 negated
#define c42 Specializer
#define c32 params
#define c22 18,2,
#define c12 coshtree
#define c02 sinhtree
#define yZ2 best_score
#define yY2 mulvalue
#define yX2 pow_item
#define yW2 subgroup
#define yV2 nC==cPow&&tO
#define yU2 PowiResult
#define yT2 ))y53
#define yS2 0));c23
#define yR2 maxValue
#define yQ2 minValue
#define yP2 div_tree
#define yO2 pow_tree
#define yN2 iV2 nT
#define yM2 preserve
#define yL2 PullResult()
#define yK2 dup_or_fetch
#define yJ2 nominator]
#define yI2 test_order
#define yH2 parampair
#define yG2 yH2,
#define yF2 .param_count
#define yE2 minimum_need
#define yD2 shift(index)
#define yC2 {std::cout<<
#define yB2 rulenumber
#define yA2 l2 16,2,
#define y92 cTanh nQ
#define y82 l14 l2 2,2,
#define y72 ,cPow iO
#define y62 cSinh nQ
#define y52 cIf,n91 3,
#define y42 cInv,lT 1,
#define y32 constraints=
#define y22 GetDepth()
#define y12 factor_immed
#define y02 changes
#define xZ2 c9 cond l8
#define xY2 Become y91
#define xX2 for(xK3
#define xW2 exp_diff
#define xV2 ExponentInfo
#define xU2 lower_bound(
#define xT2 factor
#define xS2 is_logical
#define xR2 newrel_and
#define xQ2 )){data x7 lN
#define xP2 Suboptimal
#define xO2 eK[c eA
#define xN2 res_stackpos
#define xM2 half_pos
#define xL2 ifdata.ofs
#define xK2 i8 push_back(
#define xJ2 n31 true;}
#define xI2 >>1)):(
#define xH2 CodeTreeData
#define xG2 exponent)
#define xF2 yN known)
#define xE2 multiply(
#define xD2 )y3 cPow)
#define xC2 var_trees
#define xB2 nB OPCODE
#define xA2 CodeTree&
#define x92 parent_opcode
#define x82 GetParam(a eS
#define x72 {cW start_at;
#define x62 changed=true;
#define x52 log2_exponent
#define x42 iV2(2)));
#define x32 lR,tH)tH2
#define x22 iV2(0.0))
#define x12 dup_fetch_pos
#define x02 IsNever cL lC
#define nZ2 cSin nQ
#define nY2 Value_EvenInt
#define nX2 AddCollection
#define nW2 ConditionType
#define nV2 n31 Unknown;}
#define nU2 1 y7 i8 size(
#define nT2 (iF2
#define nS2 iA|nT2)
#define nR2 SpecialOpcode
#define nQ2 =i e82.
#define nP2 yN known&&p
#define nO2 assimilated
#define nN2 denominator
#define nM2 fraction
#define nL2 DUP_BOTH();
#define nK2 0x80000000u
#define nJ2 IsDescendantOf
#define nI2 TreeCounts
#define nH2 SetOpcode(
#define nG2 found_log2
#define nF2 div_params
#define nE2 immed_sum
#define nD2 lE3++IP]
#define nC2 sim n92
#define nB2 ;sim.Push(
#define nA2 ,cMul l3
#define n92 .Eat(1,
#define n82 OPCODE(opcode)
#define n72 FactorStack xK
#define n62 Rehash(false);
#define n52 IsAlways cL lC
#define n42 cEqual,
#define n32 cNotNot nQ
#define n22 cNot nQ
#define n12 DumpHashesFrom
#define n02 replacing_slot
#define lZ2 RefParams
#define lY2 if_always[
#define lX2 WhatDoWhenCase
#define lW2 exponent_immed
#define lV2 new_base_immed
#define lU2 base_immed
#define lT2 );std::cout<<
#define lS2 ||op1==
#define lR2 l8 0));
#define lQ2 data[a tD3
#define lP2 if(newrel_or==
#define lO2 .AddOperation(
#define lN2 DUP_ONE(apos);
#define lM2 flipped
#define lL2 .UseGetNeeded(
#define lK2 ,fp_max(yL);
#define lJ2 else if(
#define lI2 lJ2!nT3
#define lH2 synth.PushImmed(
#define lG2 (*x5)[a].info
#define lF2 ,PowiCache&iB,
#define lE2 tree l8
#define lD2 <<tree.i12
#define lC2 const eJ&
#define lB2 ,l1 0x0},{{3,
#define lA2 ,0,0x4},{{1,
#define l92 {case IsAlways:
#define l82 e3 2,131,
#define l72 (IfData&ifdata
#define l62 [xS-1-offset].
#define l52 lE3 a
#define l42 Immed.tF3);
#define l32 OptimizedUsing
#define l22 Var_or_Funcno
#define l12 l22;
#define l02 GetParams(
#define iZ1 crc32_t
#define iY1 signed_chain
#define iX1 MinusInf
#define iW1 n_immeds
#define iV1 stack.tF3
#define iU1 FindClone(xI
#define iT1 lE3 IP]
#define iS1 GetOpcode())
#define iR1 needs_rehash
#define iQ1 AnyWhere_Rec
#define iP1 ~iF2(0)
#define iO1 41,42,43,44,
#define iN1 p1_logical_b
#define iM1 p0_logical_b
#define iL1 p1_logical_a
#define iK1 p0_logical_a
#define iJ1 *const func)
#define iI1 synth.DoDup(
#define iH1 cache_needed
#define iG1 e3 2,1,e3 2,
#define iF1 treelist
#define iE1 has_bad_balance
#define iD1 {if(GetOpcode()
#define iC1 if(remaining[a])
#define iB1 (*x5 n71=r.specs;if(r.found){
#define iA1 (size_t
#define i91 }yF3 case
#define i81 for iA1 b=0;b<
#define i71 for iA1 a y0
#define i61 .IsImmed()
#define i51 i61){if(
#define i41 eE3 xT2
#define i31 template<
#define i21 divgroup
#define i11 2*2*2)lS 3
#define i01 tree nC
#define tZ1 xW3 void
#define tY1 yD3 1
#define tX1 ,iB,eU,iS2
#define tW1 fp_abs(iA3))
#define tV1 fp_abs(min.val)
#define tU1 tJ 2},0,0x0},{{
#define tT1 Oneness_NotOne|
#define tS1 Value_IsInteger
#define tR1 Constness_Const
#define tQ1 ;xI iO3
#define tP1 l32(
#define tO1 reltype
#define tN1 SequenceOpcodes
#define tM1 synth.Find(
#define tL1 sep_list[
#define tK1 TreeCountType xK
#define tJ1 nI2.erase(cs_it);
#define tI1 nE3 true
#define tH1 yK set(fp_floor);
#define tG1 ,iV2(
#define tF1 );exponent
#define tE1 back().thenbranch
#define tD1 grammar_rules[*r]
#define tC1 goto fail;}
#define tB1 l1 0x4 nH
#define tA1 lZ2);
#define t91 IsDefined()){
#define t81 eJ tmp;tmp xD
#define t71 >(iV2(1),
#define t61 x22{xO
#define t51 (&*start_at){x5=(
#define t41 DelParam(a);}
#define t31 tK2 a
#define t21 a)i61)
#define t11 n82);
#define t01 0.5)xD2;lC
#define eZ1 std::cout<<"POP "
#define eY1 stack[iV1-
#define eX1 stack.push_back(
#define eW1 ,l0 2,
#define eV1 CollectionSet xK
#define eU1 xK())y3 cMul);lC
#define eT1 .Rehash();
#define eS1 ParsePowiMuli
#define eR1 MaxChildDepth
#define eQ1 iF2 a
#define eP1 std::pair<It,It>
#define eO1 cLess,l2
#define eN1 ,n63 281856,
#define eM1 cNEqual,
#define eL1 cPow,lA
#define eK1 Sign_Negative
#define eJ1 Value_Logical
#define eI1 yD MakeFalse,{l5
#define eH1 new_factor_immed
#define eG1 occurance_pos
#define eF1 exponent_hash
#define eE1 exponent_list
#define eD1 CollectMulGroup(
#define eC1 source_set
#define eB1 exponent,yT3
#define eA1 operator
#define e91 FindAndDup(tree);
#define e81 ParamSpec_Extract
#define e71 retry_anyparams_3
#define e61 retry_anyparams_2
#define e51 needlist_cached_t
#define e41 lJ 2}lA2
#define e31 lJ 1}lA2
#define e21 CodeTreeImmed xK(
#define e11 by_float_exponent
#define e01 fp_equal t62
#define cZ1 new_exp
#define cY1 end()&&i->first==
#define cX1 return BecomeZero;
#define cW1 return BecomeOne;
#define cV1 if(lQ.tF3<=n1)
#define cU1 addgroup
#define cT1 found_log2by
#define cS1 nC==cZ3)
#define cR1 if(keep_powi
#define cQ1 l22)
#define cP1 branch1_backup
#define cO1 branch2_backup
#define cN1 NeedList
#define cM1 tree.SetParam(
#define cL1 exponent_map
#define cK1 plain_set
#define cJ1 rangehalf
#define cI1 ;synth.StackTopIs(
#define cH1 (const
#define cG1 cH1 iV2&
#define cF1 eT1 tI3 op1);tree.DelParams()
#define cE1 .GetParamCount()==
#define cD1 LightWeight(
#define cC1 if(value
#define cB1 xW3 yX
#define cA1 xW3 static
#define c91 m yN set(fp_ceil);tV
#define c81 m yN val
#define c71 m yN known
#define c61 )yH2 tE3;
#define c51 ::MakeTrue
#define c41 should_regenerate=true;
#define c31 should_regenerate,
#define c21 Collection
#define c11 RelationshipResult
#define c01 Subdivide_Combine(
#define yZ1 e83 yR
#define yY1 rhs yZ1 hash1
#define yX1 PositionalParams,0
#define yW1 best_sep_factor
#define yV1 needlist_cached
#define yU1 inline iF2
#define yT1 252421 nP 24830
#define yS1 t83 bool pad
#define yR1 MakesInteger(
#define yQ1 mulgroup.
#define yP1 .AddParamMove(
#define yO1 =comp.AddItem(atree
#define yN1 tree i61 cL
#define yM1 ByteCodeSynth xK&synth)
#define yL1 lF3 FPoptimizer_Optimize
#define yK1 (long double)
#define yJ1 const iV2&value
#define yI1 best_sep_cost
#define yH1 AddParamMove(tree);
#define yG1 MultiplicationRange
#define yF1 pihalf_limits
#define yE1 n_stacked
#define yD1 cH2.hash1
#define yC1 AnyParams_Rec
#define yB1 ):e2(),std xV3<
#define yA1 i13 cJ
#define y91 (lE2
#define y81 Become(value l8 0))
#define y71 always_sincostan
#define y61 Recheck_RefCount_Div
#define y51 Recheck_RefCount_Mul
#define y41 mulgroup;mulgroup xD
#define y31 MultiplyAndMakeLong(
#define y21 iV2(0)
#define y11 covers_plus1
#define y01 if(synth.FindAndDup(
#define xZ1 SynthesizeParam(
#define xY1 grammar_func
#define xX1 cOr l3 16,1,
#define xW1 252180 nP 281854
#define xV1 l2 0,2,165888 nP
#define xU1 l1 tV3
#define xT1 Modulo_Radians},
#define xS1 PositionType
#define xR1 CollectionResult
#define xQ1 ;m yN template set_if<
#define xP1 ByteCode,size_t&IP,size_t limit,size_t y1
#define xO1 iT2))break;nT3*=
#define xN1 xW3 bool
#define xM1 const_offset
#define xL1 inline TriTruthValue
#define xK1 stacktop_desired
#define xJ1 SetStackTop(
#define xI1 }inline
#define xH1 FPoptimizer_ByteCode
#define xG1 1)?(poly^(
#define xF1 GetParamCount();
#define xE1 public e2,public std xV3<
#define xD1 y21)
#define xC1 xF leaf2 l8
#define xB1 c22 529654 nP
#define xA1 cond_type
#define x91 fphash_value_t
#define x81 Recheck_RefCount_RDiv
#define x71 cMul);tmp.nJ 0));tmp.
#define x61 SwapLastTwoInStack();
#define x51 fPExponentIsTooLarge(
#define x41 CollectMulGroup_Item(
#define x31 pair<iV2,yT3>
#define x21 nL xJ1 xS-1);
#define x11 covers_full_cycle
#define x01 AssembleSequence(
#define nZ1 <<std::dec<<")";}
#define nY1 yD MakeNotP1,l5::
#define nX1 yD MakeNotP0,l5::
#define nW1 {DataP slot_holder(xY[
#define nV1 :return p tF2
#define nU1 !=xB)if(TestCase(
#define nT1 &&IsLogicalValue(
#define nS1 std::pair<T1,T2>&
#define nR1 i31 xK3
#define nQ1 has_good_balance_found
#define nP1 n_occurrences
#define nO1 found_log2_on_exponent
#define nN1 covers_minus1
#define nM1 needs_resynth
#define nL1 immed_product
#define nK1 ,2,1 xN if(found[data.
#define nJ1 ;xW3
#define nI1 yJ3 bitmask&
#define nH1 Sign_Positive
#define nG1 SetParamMove(
#define nF1 CodeTreeImmed(iV2(
#define nE1 changed_if
#define nD1 0,xG2;DelParam(1);
#define nC1 .GetImmed()
#define nB1 for iA1 a=0;a<c8++a)
#define nA1 iF2 index
#define n91 lA 0x4},{{
#define n81 iI1 found[data.
#define n71 )[a].start_at
#define n61 ,cIf,l0 3,
#define n51 .min.known
#define n41 .xF1 a-->0;)if(
#define n31 ;return
#define n21 n31 xP2;}
#define n11 >::Optimize(){}
#define n01 n_as_tanh_param
#define lZ1 opposite=
#define lY1 x91(
#define lX1 MatchResultType
#define lW1 needs_sincos
#define lV1 resulting_exponent
#define lU1 val):Value(Value::
#define lT1 Unknown:c73;}
#define lS1 GetParam(a)
#define lR1 inverse_nominator]
#define lQ1 cMul l3 0,1,
#define lP1 tree yP1
#define lO1 AddFunctionOpcode(
#define lN1 SetParams(l02));
#define lM1 o<<"("<<std::hex<<data.
#define lL1 (val);else*this=model;}
#define lK1 IfBalanceGood(
#define lJ1 n_as_tan_param
#define lI1 changed_exponent
#define lH1 &&e13<iV2(
#define lG1 inverse_denominator
#define lF1 ;cH2.hash2+=
#define lE1 xK(rule.repl_param_list,
#define lD1 retry_positionalparams_2
#define lC1 situation_flags&
#define lB1 518 nP 400412,
#define lA1 7168 nP 401798
#define l91 }},{ProduceNewTree,
#define l81 data.subfunc_opcode
#define l71 i61 tJ2
#define l61 CopyOnWrite();
#define l51 recursioncount
#define l41 PlanNtimesCache(
#define l31 >){int mStackPtr=0;
#define l21 FPoptimizer_Grammar
#define l11 AddOperation(cInv,1,1 xN}
#define l01 GetPositivityInfo eZ3
#define iZ ParamSpec_SubFunctionData
#define iY iA1 a=c8 a-->0;)
#define iX PositionalParams_Rec
#define iW yD MakeNotNotP1,l5::
#define iV ,cMul x4
#define iU eT1 tI3 iE2 nC);tree.
#define iT yD MakeNotNotP0,l5::
#define iS lE3 xL2+
#define iR DumpTreeWithIndent(*this);
#define iQ switch(type y33 cond_or:
#define iP ;if(eY2 tM3 SaveMatchedParamIndex(
#define iO ,l4 2,1,
#define iN CalculateResultBoundaries(
#define iM i31 iF2 Compare>
#define iL cE3 0x0},{{1,
#define iK edited_powgroup
#define iJ iA1 a=xF1 a
#define iI has_unknown_max
#define iH has_unknown_min
#define iG static const c23
#define iF synthed_tree
#define iE 408964 nP 24963
#define iD SelectedParams,0},0,0x0},{{
#define iC collections
#define iB cache
#define iA ;xK2 nK2
#define i9 )iA);
#define i8 ByteCode.
#define i7 ;pow xD cLog);tree tH3
#define i6 goto ReplaceTreeWithOne;case
#define i5 ]);yE3
#define i4 !=xB)return lY2
#define i3 e11.data
#define i2 l53 xH2(
#define i1 needs_sinhcosh
#define i0 cAdd x4
#define tZ cAdd l3 0,
#define tY tA2 iV2(
#define tX xW3 nA
#define tW int_exponent_t
#define tV return m;}case
#define tU MakeFalse,l5::
#define tT lT2 std::endl;DumpHashes(
#define tS ,ByteCode,IP,limit,y1,stack);
#define tR matched_params
#define tQ [n1 tC3=true;lQ[n1 tD3
#define tP l21::Grammar*
#define tO powgroup l8
#define tN );p2 cK p2);tI3 l93 nC);cZ}
#define tM GetLogicalValue y91
#define tL t02&&found[data.
#define tK valueType
#define tJ xE AnyParams,
#define tI =iN lE2
#define tH eO3 nC1
#define tG (tH)
#define tF nF1(
#define tE has_mulgroups_remaining
#define tD by_exponent
#define tC const iZ
#define tB MatchInfo xK&
#define tA Rehash();iA2.push_back(
#define t9 best_factor
#define t8 RootPowerTable xK::RootPowers[
#define t7 MatchPositionSpec_AnyParams xK
#define t6 cLessOrEq,l2
#define t5 lF3 FPoptimizer_CodeTree
#define t4 n_as_sinh_param
#define t3 n_as_cosh_param
#define t2 is_signed
#define t1 result_positivity
#define t0 yN known tO3
#define eZ biggest_minimum
#define eY 142455 nP 141449,
#define eX cond_tree
#define eW else_tree
#define eV then_tree
#define eU sequencing
#define eT string c83
#define eS );bool needs_cow=GetRefCount()>1;
#define eR nM iV2(-nR3
#define eQ {AdoptChildrenWithSameOpcode(tree);
#define eP lJ3,l2 c22
#define eO ;AddParamMove(
#define eN yN known&&p0 yN val<=fp_const_negativezero xK())
#define eM tree.GetParamCount()
#define eL :goto ReplaceTreeWithZero;case
#define eK relationships
#define eJ CodeTree xK
#define eI ,2,122999 nP 139399,
#define eH std xV3<eJ>
#define eG if_stack
#define eF (l02));yQ1 Rehash();
#define eE n_as_sin_param
#define eD n_as_cos_param
#define eC PowiResolver::
#define eB cIf,tW3
#define eA ].relationship
#define e9 PACKED_GRAMMAR_ATTRIBUTE;
#define e8 .BalanceGood
#define e7 AddParamMove(yW2
#define e6 back().endif_location
#define e5 x91 key
#define e4 AddParamMove(mul);
#define e3 130,1,
#define e2 MatchPositionSpecBase