-
Notifications
You must be signed in to change notification settings - Fork 0
/
ToMATLAB.nb
1054 lines (1046 loc) · 47.2 KB
/
ToMATLAB.nb
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
(* Content-type: application/vnd.wolfram.mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* CreatedBy='Mathematica 11.0' *)
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 158, 7]
NotebookDataLength[ 47095, 1046]
NotebookOptionsPosition[ 46652, 1027]
NotebookOutlinePosition[ 47059, 1044]
CellTagsIndexPosition[ 47016, 1041]
WindowFrame->Normal*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[
RowBox[{"SetOptions", "[",
RowBox[{
RowBox[{"SelectedNotebook", "[", "]"}], ",",
RowBox[{"FontProperties", "\[Rule]",
RowBox[{"{",
RowBox[{"\"\<ScreenResolution\>\"", "\[Rule]", "Automatic"}], "}"}]}]}],
"]"}]], "Input",
CellChangeTimes->{{3.6880211146554074`*^9, 3.688021166465846*^9}}],
Cell[BoxData[{
RowBox[{
RowBox[{
RowBox[{
RowBox[{"Each", "[",
RowBox[{"lst_", ",", "expr_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{"expr", "@@", "#"}], ")"}], "&"}], "/@", "lst"}]}], ";"}],
"\[IndentingNewLine]"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"$NRational", "=", "False"}], ";"}],
"\[IndentingNewLine]"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"ClearAll", "[", "IntSize", "]"}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"IntSize", "[", "0", "]"}], "=", "1"}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"IntSize", "[", "x_Integer", "]"}], ":=",
RowBox[{"IntegerLength", "[",
RowBox[{
RowBox[{
RowBox[{"2",
RowBox[{"Abs", "@", "x"}]}], "+",
RowBox[{"Sign", "@", "x"}]}], ",", "256"}], "]"}]}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"IntName", "=",
RowBox[{
RowBox[{"\"\<Integer\>\"", "<>",
RowBox[{"ToString", "[",
RowBox[{"8", "*", "#"}], "]"}]}], "&"}]}], ";"}],
"\[IndentingNewLine]"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"ClearAll", "[", "ToSubExprPostfix", "]"}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_Rational", ",", "hash_"}], "]"}], ":=",
RowBox[{"If", "[",
RowBox[{"$NRational", ",",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"N", "@", "atom"}], ",", "hash"}], "]"}], ",",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{"First", "@",
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"Denominator", "@", "atom"}], ",", "hash"}], "]"}],
",",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"Numerator", "@", "atom"}], ",", "hash"}], "]"}], ",",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"Rational", ",", "hash"}], "]"}], ",",
RowBox[{"2", "&"}]}], "}"}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "]"}]}]}], ";"}]}], "}"}]}], ",",
RowBox[{"$", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], "]"}]}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_Complex", ",", "hash_"}], "]"}], ":=",
"\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{"First", "@",
RowBox[{"{",
RowBox[{
RowBox[{"Flatten", "@",
RowBox[{"{",
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"Im", "@", "atom"}], ",", "hash"}], "]"}], ",",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"Re", "@", "atom"}], ",", "hash"}], "]"}], ",",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"Complex", ",", "hash"}], "]"}], ",",
RowBox[{"2", "&"}]}], "}"}]}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "]"}]}]}], ";"}]}], "}"}]}], ",",
RowBox[{"$", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], ";"}], "\[IndentingNewLine]",
RowBox[{"(*",
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_SparseArray", ",", "hash_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{"First", "@",
RowBox[{"{",
RowBox[{
RowBox[{"Join", "[",
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"ArrayRules", "@", "atom"}], ",", "hash"}], "]"}],
",",
RowBox[{"{",
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"SparseArray", ",", "hash"}], "]"}], ",",
RowBox[{"1", "&"}]}], "}"}]}], "]"}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "]"}]}]}], ";"}]}], "}"}]}], ",",
RowBox[{"$", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], ";"}],
"*)"}]}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_SparseArray", ",", "hash_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{"First", "@",
RowBox[{"{",
RowBox[{
RowBox[{"Flatten", "@",
RowBox[{"{",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"#", ",", "hash"}], "]"}], "&"}], "/@",
RowBox[{"Reverse", "[",
RowBox[{"List", "@@",
RowBox[{"ToExpression", "[",
RowBox[{"\"\<$\>\"", "<>",
RowBox[{"ToString", "[",
RowBox[{"atom", ",", "InputForm"}], "]"}]}], "]"}]}],
"]"}]}], ",",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"SparseArray", ",", "hash"}], "]"}], ",",
RowBox[{"4", "&"}]}], "}"}]}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "]"}]}]}], ";"}]}], "}"}]}], ",",
RowBox[{"$", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_Symbol", ",", "hash_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "1", "]"}]}]}], ";", "atom"}], ",",
RowBox[{"$1", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_String", ",", "hash_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "2", "]"}]}]}], ";", "atom"}], ",",
RowBox[{"$2", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_Real", ",", "hash_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "3", "]"}]}]}], ";", "atom"}], ",",
RowBox[{"$3", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"atom_Integer", ",", "hash_"}], "]"}], ":=",
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"IntSize", "@", "atom"}], ">", "2"}], ",",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "]"}]}]}], ";", "atom"}], ",",
RowBox[{"$", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}], ",", "atom"}], "]"}]}], ";"}],
"\[IndentingNewLine]",
RowBox[{"(*",
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"atom", ":",
RowBox[{"(",
RowBox[{"_Symbol", "|", "_String"}], ")"}]}], ",", "hash_"}], "]"}],
":=", "atom"}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"atom_", "?", "AtomQ"}], ",", "hash_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "atom", "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "]"}]}]}], ";", "atom"}], ",",
RowBox[{"$", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "atom", "]"}]}]}], ";"}],
"*)"}]}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"expr_", ",", "hash_"}], "]"}], ":=",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"#", "===", "0"}], ",",
RowBox[{"First", "@",
RowBox[{"{",
RowBox[{
RowBox[{"Flatten", "@",
RowBox[{"{",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"#", ",", "hash"}], "]"}], "&"}], "/@",
RowBox[{"Reverse", "[",
RowBox[{"List", "@@", "expr"}], "]"}]}], ",",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{
RowBox[{"Head", "@", "expr"}], ",", "hash"}], "]"}], ",",
RowBox[{"Function", "@@",
RowBox[{"{",
RowBox[{"Length", "@", "expr"}], "}"}]}]}], "}"}]}], ",",
RowBox[{
RowBox[{
RowBox[{"hash", "[",
RowBox[{"Verbatim", "@", "expr"}], "]"}], "=",
RowBox[{"++",
RowBox[{"hash", "[", "]"}]}]}], ";"}]}], "}"}]}], ",",
RowBox[{"$", "@", "#"}]}], "]"}], "&"}], "@",
RowBox[{"hash", "[", "expr", "]"}]}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"ToSubExprPostfix", "[", "expr_", "]"}], ":=",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{"hash", ",", "r"}], "}"}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"hash", "[", "]"}], "=", "0"}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"hash", "[", "_", "]"}], "=", "0"}], ";",
"\[IndentingNewLine]",
RowBox[{"(*",
RowBox[{
RowBox[{"Do", "[",
RowBox[{
RowBox[{
RowBox[{"hash", "@",
RowBox[{
"Symbols", "\[LeftDoubleBracket]", "i",
"\[RightDoubleBracket]"}]}], "=", "i"}], ",",
RowBox[{"{",
RowBox[{"i", ",",
RowBox[{"Length", "@", "Symbols"}]}], "}"}]}], "]"}], ";"}],
"*)"}], "\[IndentingNewLine]",
RowBox[{"r", "=",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"expr", ",", "hash"}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"Remove", "[", "hash", "]"}], ";", "r"}]}], "]"}]}], ";"}],
"\[IndentingNewLine]"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"ClearAll", "[", "SubExprPostfixPool", "]"}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"SubExprPostfixPool", "[", "list_List", "]"}], ":=",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"dict1", "=",
RowBox[{"{", "}"}]}], ",",
RowBox[{"dict2", "=",
RowBox[{"{", "}"}]}], ",",
RowBox[{"dict3", "=",
RowBox[{"{", "}"}]}]}], "}"}], ",", "\[IndentingNewLine]",
RowBox[{"{",
RowBox[{
RowBox[{"Table", "[",
RowBox[{
RowBox[{"Switch", "[",
RowBox[{
RowBox[{"Head", "@", "item"}], ",", "\[IndentingNewLine]",
"Symbol", ",",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"dict1", ",", "item"}], "]"}], ";",
RowBox[{"$1", "@",
RowBox[{"Length", "@", "dict1"}]}]}], ",", "\[IndentingNewLine]",
"String", ",",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"dict2", ",", "item"}], "]"}], ";",
RowBox[{"$2", "@",
RowBox[{"Length", "@", "dict2"}]}]}], ",", "\[IndentingNewLine]",
"Real", ",",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"dict3", ",", "item"}], "]"}], ";",
RowBox[{"$3", "@",
RowBox[{"Length", "@", "dict3"}]}]}], ",", "\[IndentingNewLine]",
"_", ",", "item"}], "\[IndentingNewLine]", "]"}], ",",
RowBox[{"{",
RowBox[{"item", ",", "list"}], "}"}]}], "]"}], ",",
RowBox[{"{",
RowBox[{"dict1", ",", "dict2", ",", "dict3"}], "}"}]}], "}"}]}],
"\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"SubExprPostfixPool", "[",
RowBox[{"list_List", ",",
RowBox[{"pool", ":",
RowBox[{"{",
RowBox[{
RowBox[{"{", "___",
RowBox[{"(*", "Symbol", "*)"}], "}"}], ",",
RowBox[{"{", "___",
RowBox[{"(*", "String", "*)"}], "}"}], ",",
RowBox[{"{", "___",
RowBox[{"(*", "Real", "*)"}], "}"}]}], "}"}]}]}], "]"}], ":=",
"\[IndentingNewLine]",
RowBox[{"list", "/.",
RowBox[{"{",
RowBox[{
RowBox[{
RowBox[{"$1", "[", "i_Integer", "]"}], "\[RuleDelayed]",
RowBox[{"pool", "\[LeftDoubleBracket]",
RowBox[{"1", ",", "i"}], "\[RightDoubleBracket]"}]}], ",",
RowBox[{
RowBox[{"$2", "[", "i_Integer", "]"}], "\[RuleDelayed]",
RowBox[{"pool", "\[LeftDoubleBracket]",
RowBox[{"2", ",", "i"}], "\[RightDoubleBracket]"}]}], ",",
RowBox[{
RowBox[{"$3", "[", "i_Integer", "]"}], "\[RuleDelayed]",
RowBox[{"pool", "\[LeftDoubleBracket]",
RowBox[{"3", ",", "i"}], "\[RightDoubleBracket]"}]}]}], "}"}]}]}],
";"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"ClearAll", "[", "FromSubExprPostfix", "]"}],
";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"FromSubExprPostfix", "[",
RowBox[{"list_List", ",",
RowBox[{"pool", ":",
RowBox[{"{",
RowBox[{
RowBox[{"{", "___",
RowBox[{"(*", "Symbol", "*)"}], "}"}], ",",
RowBox[{"{", "___",
RowBox[{"(*", "String", "*)"}], "}"}], ",",
RowBox[{"{", "___",
RowBox[{"(*", "Real", "*)"}], "}"}]}], "}"}], ":",
RowBox[{"{",
RowBox[{
RowBox[{"{", "}"}], ",",
RowBox[{"{", "}"}], ",",
RowBox[{"{", "}"}]}], "}"}]}]}], "]"}], ":=",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"stack", "=",
RowBox[{"{", "}"}]}], ",", "pop", ",",
RowBox[{"dict", "=",
RowBox[{"{", "}"}]}], ",",
RowBox[{"dict1", "=",
RowBox[{
"pool", "\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}]}], ",",
RowBox[{"dict2", "=",
RowBox[{
"pool", "\[LeftDoubleBracket]", "2", "\[RightDoubleBracket]"}]}], ",",
RowBox[{"dict3", "=",
RowBox[{
"pool", "\[LeftDoubleBracket]", "3", "\[RightDoubleBracket]"}]}]}],
"}"}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{"pop", "=",
RowBox[{"Function", "[",
RowBox[{
RowBox[{"{", "x", "}"}], ",",
RowBox[{
RowBox[{"{",
RowBox[{
RowBox[{"Last", "@", "x"}], ",",
RowBox[{
RowBox[{"x", "=",
RowBox[{"Most", "@", "x"}]}], ";"}]}], "}"}],
"\[LeftDoubleBracket]", "1", "\[RightDoubleBracket]"}], ",",
RowBox[{"{", "HoldAll", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"Do", "[",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"stack", ",", "\[IndentingNewLine]",
RowBox[{"Switch", "[",
RowBox[{
RowBox[{"Head", "@", "item"}], ",", "\[IndentingNewLine]",
"Function", ",",
RowBox[{
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"dict", ",", "#"}], "]"}], ";", "#"}], ")"}], "&"}],
"[",
RowBox[{
RowBox[{"(",
RowBox[{"pop", "@", "stack"}], ")"}], "@@",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"pop", "@", "stack"}], ",",
RowBox[{"{",
RowBox[{"First", "@", "item"}], "}"}]}], "]"}]}], "]"}], ",",
"\[IndentingNewLine]", "$", ",",
RowBox[{"dict", "\[LeftDoubleBracket]",
RowBox[{"First", "@", "item"}], "\[RightDoubleBracket]"}], ",",
"\[IndentingNewLine]", "$1", ",",
RowBox[{"dict1", "\[LeftDoubleBracket]",
RowBox[{"First", "@", "item"}], "\[RightDoubleBracket]"}], ",",
"\[IndentingNewLine]", "$2", ",",
RowBox[{"dict2", "\[LeftDoubleBracket]",
RowBox[{"First", "@", "item"}], "\[RightDoubleBracket]"}], ",",
"\[IndentingNewLine]", "$3", ",",
RowBox[{"dict3", "\[LeftDoubleBracket]",
RowBox[{"First", "@", "item"}], "\[RightDoubleBracket]"}], ",",
"\[IndentingNewLine]", "Symbol", ",",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"dict1", ",", "item"}], "]"}], ";", "item"}], ",",
"\[IndentingNewLine]", "String", ",",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"dict2", ",", "item"}], "]"}], ";", "item"}], ",",
"\[IndentingNewLine]", "Real", ",",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"dict3", ",", "item"}], "]"}], ";", "item"}], ",",
"\[IndentingNewLine]", "Integer", ",",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"IntSize", "@", "item"}], ">", "2"}], ",",
RowBox[{"AppendTo", "[",
RowBox[{"dict", ",", "item"}], "]"}]}], "]"}], ";",
"item"}]}], "\[IndentingNewLine]",
RowBox[{"(*",
RowBox[{
RowBox[{
RowBox[{
RowBox[{"Symbol", "|", "String"}], ",", "item", ",",
"\[IndentingNewLine]", "_", ",",
RowBox[{"AppendTo", "[",
RowBox[{"dict", ",", "item"}], "]"}]}], "]"}], ";", "item"}],
"*)"}], "\[IndentingNewLine]", "]"}]}], "]"}],
"\[IndentingNewLine]", ",",
RowBox[{"{",
RowBox[{"item", ",", "list"}], "}"}]}], "]"}], ";",
"\[IndentingNewLine]",
RowBox[{"pop", "@", "stack"}]}]}], "\[IndentingNewLine]", "]"}]}],
";"}]}], "Input",
InitializationCell->True,
CellChangeTimes->{{3.6438934906507225`*^9, 3.6438934986591806`*^9}, {
3.6438935321870985`*^9, 3.6438936311477585`*^9}, {3.643893698730624*^9,
3.643893702357832*^9}, {3.643893758191025*^9, 3.6438938156023088`*^9}, {
3.643894036577948*^9, 3.643894049219671*^9}, {3.643894080022433*^9,
3.6438941015416636`*^9}, 3.643894161250079*^9, {3.6438941987612243`*^9,
3.6438942770056996`*^9}, {3.6438943112346573`*^9, 3.643894337904183*^9}, {
3.643894387580024*^9, 3.6438944875277405`*^9}, {3.6438945407457848`*^9,
3.6438947130636406`*^9}, {3.643894819759743*^9, 3.643894819932753*^9}, {
3.643894855971814*^9, 3.6438948732818046`*^9}, {3.6438949613478413`*^9,
3.643894974360586*^9}, {3.6438950078044987`*^9, 3.6438950180490847`*^9}, {
3.643895051292986*^9, 3.6438950909222527`*^9}, {3.6438951458343935`*^9,
3.6438951565670075`*^9}, {3.6438952874864955`*^9, 3.643895332708082*^9}, {
3.6438953926445103`*^9, 3.6438953935395613`*^9}, {3.6438957632167063`*^9,
3.6438957637847385`*^9}, {3.6438958604942703`*^9,
3.6438959824362445`*^9}, {3.6438960361243153`*^9, 3.643896087553257*^9}, {
3.6438961231362925`*^9, 3.6438962639843483`*^9}, {3.643896545832469*^9,
3.643896553929932*^9}, {3.6438966269451084`*^9, 3.6438966383077583`*^9}, {
3.6438967770486937`*^9, 3.6438967784447737`*^9}, {3.643896825498465*^9,
3.6438968633146276`*^9}, {3.6438969044809823`*^9,
3.6438969935810785`*^9}, {3.6438970257679195`*^9,
3.6438970648631563`*^9}, {3.6438973783340855`*^9,
3.6438973931139307`*^9}, {3.643897424730739*^9, 3.643897491341549*^9}, {
3.643897541256404*^9, 3.6438977651972127`*^9}, {3.643898200401105*^9,
3.643898200783127*^9}, {3.6439009963210225`*^9, 3.643901084839085*^9}, {
3.64390117461122*^9, 3.6439011938033175`*^9}, {3.64390125608288*^9,
3.643901257775977*^9}, {3.6439013315021935`*^9, 3.6439016288952036`*^9}, {
3.6439017179192953`*^9, 3.6439017791077952`*^9}, {3.6439018140547943`*^9,
3.643901818501048*^9}, {3.6439019847925596`*^9, 3.643902129651845*^9}, {
3.643902211777542*^9, 3.643902281749545*^9}, {3.64390242904797*^9,
3.6439024491701207`*^9}, {3.643902523272359*^9, 3.643902547462743*^9}, {
3.6439026355087786`*^9, 3.6439026416461296`*^9}, {3.6439027033266573`*^9,
3.643902977928364*^9}, {3.6439034507044053`*^9, 3.64390349625101*^9}, {
3.6439035423166447`*^9, 3.6439035952126703`*^9}, {3.6439043713240614`*^9,
3.643904391325206*^9}, {3.6439044562619195`*^9, 3.643904456454931*^9}, {
3.6439063110850096`*^9, 3.6439063591137567`*^9}, {3.643907086506361*^9,
3.6439071728452997`*^9}, {3.6439072069302487`*^9,
3.6439074953937483`*^9}, {3.643962476361002*^9, 3.6439625571734867`*^9}, {
3.643962619656371*^9, 3.643962711021106*^9}, {3.643962937282659*^9,
3.643962947401662*^9}, {3.643963096271728*^9, 3.643963126153479*^9}, {
3.643963167592284*^9, 3.6439631720190363`*^9}, {3.643963387367687*^9,
3.643963392773024*^9}, {3.643972720953671*^9, 3.643972722420835*^9}, {
3.643972937397894*^9, 3.64397293793464*^9}, {3.643972986339861*^9,
3.6439729989416*^9}, {3.643973822385684*^9, 3.643973822718341*^9}, {
3.643974228149562*^9, 3.643974238174799*^9}, {3.643974292051475*^9,
3.643974297285942*^9}, {3.643974338483923*^9, 3.643974450396497*^9}, {
3.643974491963791*^9, 3.643974616108539*^9}, {3.64397465470147*^9,
3.6439747246168327`*^9}, {3.6439748582459993`*^9, 3.643974865909705*^9}, {
3.64397490619902*^9, 3.643974916492927*^9}, {3.643975303795882*^9,
3.6439753205837383`*^9}, 3.64397537173932*^9, {3.643975534373925*^9,
3.643975559555189*^9}, {3.6439756307912073`*^9, 3.643975690138619*^9}, {
3.6439760666369333`*^9, 3.64397607764703*^9}, {3.643976127044647*^9,
3.6439762984736967`*^9}, {3.643984535951445*^9, 3.643984711025459*^9}, {
3.6439860280887904`*^9, 3.6439860715952787`*^9}, {3.6440453340859914`*^9,
3.6440453354410686`*^9}, {3.644045632536062*^9, 3.6440456337141294`*^9}, {
3.6440457284345465`*^9, 3.6440457286085567`*^9}, {3.644045813531414*^9,
3.644045905304663*^9}, {3.6440459510812817`*^9, 3.6440460181511173`*^9}, {
3.644046114917652*^9, 3.644046148253559*^9}, {3.644046374891522*^9,
3.644046521663917*^9}, {3.644046586391619*^9, 3.644046592749983*^9}, {
3.6440466817870755`*^9, 3.6440467226594133`*^9}, {3.644046796524638*^9,
3.6440467976127005`*^9}, {3.6440491880794272`*^9, 3.644049188592457*^9}, {
3.644049224265497*^9, 3.644049310454427*^9}, {3.6440647500446844`*^9,
3.644064751579769*^9}, {3.644064803732675*^9, 3.6440648139302416`*^9},
3.6440648715074472`*^9, {3.6440649192271085`*^9, 3.644065034753539*^9}, {
3.6440709549942093`*^9, 3.6440709804726667`*^9}, {3.6440710877785883`*^9,
3.6440710969289093`*^9}, {3.6440712423905954`*^9,
3.6440713444380226`*^9}, {3.6441133895829124`*^9,
3.6441133909429903`*^9}, {3.644116499002761*^9, 3.644116513548593*^9}, {
3.6442031101111093`*^9, 3.6442031293152075`*^9}, {3.644203185622428*^9,
3.6442031893626423`*^9}, {3.6442032602346954`*^9,
3.6442032719783673`*^9}, {3.6442034120923815`*^9,
3.6442034221419563`*^9}, {3.644203477503123*^9, 3.6442034932070208`*^9}, {
3.64420357623877*^9, 3.6442035849172664`*^9}, {3.644203647408841*^9,
3.6442036624387007`*^9}, {3.6442038000225697`*^9,
3.6442038189476523`*^9}, {3.644203891937827*^9, 3.644204208074909*^9}, {
3.644204327455737*^9, 3.644204348074917*^9}, {3.6442044220541477`*^9,
3.6442045338235407`*^9}, {3.644204593984982*^9, 3.6442046815359898`*^9}, {
3.644204720727231*^9, 3.644205072339342*^9}, {3.644205156138135*^9,
3.64420520168474*^9}, 3.644205401641177*^9, 3.6442054549262247`*^9,
3.644205509203329*^9, {3.6442056118381996`*^9, 3.644205638080701*^9}, {
3.6442056729016924`*^9, 3.644205673633734*^9}, {3.644205704781516*^9,
3.6442058715030518`*^9}, {3.644205940318988*^9, 3.644205943748184*^9}, {
3.6442061640827866`*^9, 3.6442061672919703`*^9}, {3.6442061976577067`*^9,
3.644206269992844*^9}, {3.644206363252178*^9, 3.644206482255985*^9}, {
3.6442065569732585`*^9, 3.644206573806221*^9}, {3.644206634961719*^9,
3.644206638438918*^9}, {3.6442066954061766`*^9, 3.644206696183221*^9}, {
3.6442068717322617`*^9, 3.6442068826488857`*^9}, {3.6442069183109255`*^9,
3.644206997902478*^9}, {3.6442071262228174`*^9, 3.6442071306270695`*^9}, {
3.644207251184965*^9, 3.644207274928323*^9}, {3.6442074483902445`*^9,
3.6442074633721013`*^9}, {3.6442077075590677`*^9,
3.6442078196774807`*^9}, {3.6442079091745996`*^9, 3.644207945804695*^9}, {
3.644208012134489*^9, 3.6442080371159177`*^9}, {3.6442086279797134`*^9,
3.644208671318192*^9}, {3.644208746063467*^9, 3.644208806794941*^9}, {
3.6442090124547043`*^9, 3.6442090714730797`*^9}, {3.6442091286683507`*^9,
3.644209193561063*^9}, {3.644209226331937*^9, 3.6442092564156575`*^9}, {
3.644209292729735*^9, 3.6442092980410385`*^9}, {3.644209337109273*^9,
3.6442094151427364`*^9}, {3.644209460210314*^9, 3.6442094688908105`*^9}, {
3.6442095055139055`*^9, 3.6442095388088093`*^9}, {3.6442096112089505`*^9,
3.6442096215935445`*^9}, {3.644209783598811*^9, 3.644209852711764*^9}, {
3.6442098909359503`*^9, 3.644209909425008*^9}, {3.6442100253396378`*^9,
3.644210067805066*^9}, 3.644210104673175*^9, {3.644210406029412*^9,
3.644210463006671*^9}, {3.6442105307335443`*^9, 3.644210547200486*^9}, {
3.644210706555601*^9, 3.644210816199872*^9}, {3.64421103103316*^9,
3.644211033363293*^9}, {3.644211081406041*^9, 3.6442111270816536`*^9}, {
3.644211258599176*^9, 3.644211294664239*^9}, {3.6442119290305223`*^9,
3.6442119749361477`*^9}, {3.644212022546871*^9, 3.644212025723053*^9}, {
3.64421209683212*^9, 3.644212164085967*^9}, {3.6442122362130923`*^9,
3.6442123198198743`*^9}, {3.6442124110670934`*^9, 3.644212416176386*^9}, {
3.644212450768364*^9, 3.6442125659209504`*^9}, {3.6442126595033035`*^9,
3.644212683107653*^9}, {3.644213005156073*^9, 3.644213006940175*^9}, {
3.644213048331543*^9, 3.6442130505976725`*^9}, {3.6442131441210213`*^9,
3.644213162219057*^9}, {3.6442131936328535`*^9, 3.644213202036334*^9}, {
3.6442132499440746`*^9, 3.644213330085658*^9}, {3.644213577289798*^9,
3.64421361458193*^9}, {3.6442141080681562`*^9, 3.6442141300414133`*^9}, {
3.644240661478258*^9, 3.6442406741759844`*^9}, {3.644240705320766*^9,
3.64424077025548*^9}, {3.6442408225774727`*^9, 3.6442409094524417`*^9}, {
3.6442412931423874`*^9, 3.6442412939234324`*^9}, {3.644242581267064*^9,
3.644242659643547*^9}, {3.644242732162695*^9, 3.644242765138581*^9}, {
3.644243115827639*^9, 3.6442431358367834`*^9}, {3.644243224537857*^9,
3.6442432249378796`*^9}, {3.6442455025611525`*^9,
3.6442455784374924`*^9}, {3.6442456291973953`*^9,
3.6442456587610865`*^9}, {3.644245728468074*^9, 3.64424577560877*^9}, {
3.6442458445907154`*^9, 3.6442458509900813`*^9}, {3.6442458943005586`*^9,
3.6442458969777117`*^9}, {3.6442459326547527`*^9, 3.644245936206956*^9}, {
3.6442461787418275`*^9, 3.644246409003998*^9}, {3.6442465610156927`*^9,
3.64424656341183*^9}, {3.6442470799883757`*^9, 3.6442471150143795`*^9},
3.6442471581628475`*^9, {3.6442473541180553`*^9, 3.6442473655817113`*^9}, {
3.6442477268663754`*^9, 3.6442478877695785`*^9}, {3.644248101111781*^9,
3.6442481076441545`*^9}, {3.6442481609612045`*^9,
3.6442481947571373`*^9}, {3.644248242044842*^9, 3.6442482762717996`*^9}, {
3.644248352468158*^9, 3.6442484003788977`*^9}, {3.644248435355899*^9,
3.644248459001251*^9}, {3.6442485170645723`*^9, 3.6442486619158573`*^9}, {
3.644248702851198*^9, 3.644248788944123*^9}, {3.644248907666913*^9,
3.6442489104880743`*^9}, {3.6442489449830475`*^9, 3.644248955676659*^9}, {
3.644249004381445*^9, 3.644249107863364*^9}, {3.6442491725580645`*^9,
3.6442492188617125`*^9}, {3.6442492490424385`*^9, 3.644249376305718*^9}, {
3.644249406952471*^9, 3.6442494606075397`*^9}, {3.6442495048340693`*^9,
3.644249519027881*^9}, {3.6442495583731318`*^9, 3.6442495587351522`*^9}, {
3.644249624804931*^9, 3.644249650855421*^9}, {3.6442497164051704`*^9,
3.6442498217941985`*^9}, {3.6442498852268267`*^9,
3.6442500136051693`*^9}, {3.644250051470335*^9, 3.6442500808020124`*^9}, {
3.6442501891712112`*^9, 3.64425018932822*^9}, 3.64425028653378*^9, {
3.644250341025897*^9, 3.6442503439490643`*^9}, {3.6442503852514267`*^9,
3.6442503874565525`*^9}, 3.64425047360748*^9, {3.644250522820295*^9,
3.6442505230963106`*^9}, {3.6442507798949986`*^9,
3.6442507826921587`*^9}, {3.6442508912303667`*^9,
3.6442509036630774`*^9}, {3.6442518768617415`*^9, 3.644251965142791*^9}, {
3.6442520059561253`*^9, 3.6442520100943623`*^9}, {3.6442520522057705`*^9,
3.644252107705945*^9}, {3.644252301871051*^9, 3.6442523025530896`*^9}, {
3.6442523982285624`*^9, 3.6442524531337023`*^9}, {3.644252512837117*^9,
3.6442525986220236`*^9}, {3.644252645812723*^9, 3.644252729314499*^9}, {
3.6442527934611683`*^9, 3.6442529025644083`*^9}, {3.644253044086503*^9,
3.6442530527489986`*^9}, {3.64425310015571*^9, 3.644253115264574*^9}, {
3.6442531813033514`*^9, 3.644253314234955*^9}, {3.6442533697231283`*^9,
3.644253369960142*^9}, {3.6442534193959694`*^9, 3.644253435930915*^9}, {
3.644253490547039*^9, 3.644253527422148*^9}, {3.6442535663643756`*^9,
3.644253709076538*^9}, {3.644253755927218*^9, 3.6442537568272696`*^9}, {
3.6442538242201242`*^9, 3.6442538802493286`*^9}, {3.644253985860369*^9,
3.644254157795203*^9}, {3.644254189642025*^9, 3.644254315516225*^9}, {
3.644254481146698*^9, 3.6442545074832044`*^9}, {3.644254919174752*^9,
3.6442549558838515`*^9}, {3.644255034697359*^9, 3.644255036420458*^9}, {
3.6442551146129303`*^9, 3.644255147759826*^9}, {3.644255182196796*^9,
3.6442551839578967`*^9}, {3.6442552179438405`*^9,
3.6442552721569414`*^9}, {3.644255367507395*^9, 3.6442553701195445`*^9}, {
3.644255828773778*^9, 3.6442559142356663`*^9}, {3.644255948605632*^9,
3.644255958276185*^9}, {3.64425601255729*^9, 3.6442561102018747`*^9}, {
3.6442564494322777`*^9, 3.644256452364445*^9}, {3.644280657775235*^9,
3.64428068250765*^9}, {3.644280719272753*^9, 3.6442807256251163`*^9}, {
3.644280916493033*^9, 3.644280922197359*^9}, {3.6442810178938327`*^9,
3.6442811309543*^9}, {3.6442812001232557`*^9, 3.6442813659477406`*^9}, {
3.644281501017466*^9, 3.6442815012784805`*^9}, {3.644281658035447*^9,
3.644281684476959*^9}, {3.644281768481764*^9, 3.6442818953590207`*^9}, {
3.644281934912283*^9, 3.64428207647438*^9}, {3.644282145545331*^9,
3.6442823175851707`*^9}, {3.64428246285748*^9, 3.6442826531373634`*^9}, {
3.644282733113938*^9, 3.6442827334849586`*^9}, {3.644282819630886*^9,
3.6442828470484543`*^9}, {3.6442829241718655`*^9, 3.64428294278093*^9}, {
3.644282987298476*^9, 3.644282989394596*^9}, {3.6442830651369286`*^9,
3.6442830899863496`*^9}, {3.644283125874402*^9, 3.644283173925151*^9}, {
3.644283400591115*^9, 3.644283405857416*^9}, {3.644305149635339*^9,
3.6443051499293556`*^9}, 3.644305245899845*^9, {3.644305319626062*^9,
3.644305496127157*^9}, {3.644305597262942*^9, 3.644305602851261*^9}, {
3.6443423508717475`*^9, 3.6443423891849394`*^9}, {3.644342448959358*^9,
3.644342526708805*^9}, {3.6443426446645517`*^9, 3.644342685954913*^9}, {
3.6443820002218275`*^9, 3.644382095492277*^9}, {3.6443821317393503`*^9,
3.644382318374025*^9}, {3.6443823683218813`*^9, 3.644382495429152*^9}, {
3.644382563981073*^9, 3.644382612303837*^9}, {3.6443826620036793`*^9,
3.6443827111004877`*^9}, {3.64438275991928*^9, 3.6443828138833666`*^9},
3.64438286376822*^9, {3.644382956314513*^9, 3.64438299612479*^9}, {
3.6443830370431304`*^9, 3.6443830557031975`*^9}, {3.64438324019275*^9,
3.644383264231125*^9}, {3.644383303536373*^9, 3.644383328357793*^9}, {
3.6443835941559954`*^9, 3.644383595023045*^9}, {3.644383933333395*^9,
3.644383939618755*^9}, {3.644383970693532*^9, 3.644383991531724*^9}, {
3.644385213364609*^9, 3.644385229786548*^9}, {3.6443853941159472`*^9,
3.64438545291231*^9}, {3.6443906567079506`*^9, 3.644390660460165*^9}, {
3.6443955814666305`*^9, 3.6443955822916775`*^9}, {3.6443956225549803`*^9,
3.6443956641613607`*^9}, {3.6443957269249496`*^9,
3.6443957671082487`*^9}, {3.6443959633714743`*^9, 3.644395967214694*^9}, {
3.644396033745499*^9, 3.644396040362878*^9}, {3.6443960727297287`*^9,
3.644396087324564*^9}, {3.6844697132859325`*^9, 3.6844697136899557`*^9}, {
3.684469862443464*^9, 3.6844698943762903`*^9}, {3.684477274830428*^9,
3.6844772752534523`*^9}, {3.688093577868512*^9, 3.6880935805860853`*^9}}],
Cell[BoxData[{
RowBox[{
RowBox[{"ClearAll", "[", "ToMATLAB", "]"}], ";"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"ToMATLAB", "[", "expr_", "]"}], ":=",
RowBox[{"Block", "[",
RowBox[{
RowBox[{"{",
RowBox[{"(*",
RowBox[{
RowBox[{"$NRational", "=", "True"}], ","}], "*)"}],
RowBox[{"data", ",", "symbols", ",", "strings", ",", "floats", ",",
RowBox[{"str", "=", "\"\<\>\""}], ",",
RowBox[{"stack", "=",
RowBox[{"{", "}"}]}], ",",
RowBox[{"top", "=", "0"}], ",",
RowBox[{"dict", "=", "0"}]}], "}"}], ",", "\[IndentingNewLine]",
RowBox[{
RowBox[{"ClearAll", "[", "print", "]"}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"print", "[", "args___", "]"}], ":=",
RowBox[{"(",
RowBox[{"str", "=",
RowBox[{"str", "<>",
RowBox[{"StringJoin", "[",
RowBox[{"ToString", "/@",
RowBox[{"{", "args", "}"}]}], "]"}], "<>", "\"\<\\n\>\""}]}],
")"}]}], ";", "\[IndentingNewLine]",
RowBox[{"ClearAll", "[",
RowBox[{"push", ",", "get", ",", "set", ",", "func"}], "]"}], ";",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"push", "[", "v_", "]"}], ":=",
RowBox[{"(",
RowBox[{
RowBox[{"++", "top"}], ";",
RowBox[{"If", "[",
RowBox[{
RowBox[{"top", ">",
RowBox[{"Length", "@", "stack"}]}], ",",
RowBox[{"AppendTo", "[",
RowBox[{"stack", ",", "v"}], "]"}], ",",
RowBox[{
RowBox[{
"stack", "\[LeftDoubleBracket]", "top", "\[RightDoubleBracket]"}],
"=", "v"}]}], "]"}], ";"}], ")"}]}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"get", "[",
RowBox[{"v_:", "Null"}], "]"}], ":=",
RowBox[{"push", "[",
RowBox[{"\"\<f\>\"", "<>",
RowBox[{"ToString", "[",
RowBox[{"If", "[",
RowBox[{
RowBox[{"v", "=!=", "Null"}], ",", "v", ",", "dict"}], "]"}],
"]"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"set", "[", "v_", "]"}], ":=",
RowBox[{"(",
RowBox[{
RowBox[{"++", "dict"}], ";",
RowBox[{"print", "[",
RowBox[{
"\"\<f\>\"", ",", "dict", ",", "\"\<=\>\"", ",", "v", ",",
"\"\<;\>\""}], "]"}], ";"}], ")"}]}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"func", "[", "size_Integer", "]"}], ":=",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{"head", ",", "args", ",", "r"}], "}"}], ",",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"head", "=",
RowBox[{
"stack", "\[LeftDoubleBracket]", "top",
"\[RightDoubleBracket]"}]}], ";", "\[IndentingNewLine]",
RowBox[{"args", "=",
RowBox[{"Table", "[",
RowBox[{
RowBox[{
RowBox[{"--", "top"}], ";",
RowBox[{
"stack", "\[LeftDoubleBracket]", "top",
"\[RightDoubleBracket]"}]}], ",",
RowBox[{"{", "size", "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"--", "top"}], ";", "\[IndentingNewLine]",
RowBox[{"r", "=",
RowBox[{"Switch", "[",
RowBox[{"head", ",", "\[IndentingNewLine]", "List", ",",
RowBox[{"\"\<[\>\"", "<>",
RowBox[{"ToString", "/@",
RowBox[{"Riffle", "[",
RowBox[{"args", ",", "\"\<;\>\""}], "]"}]}], "<>",
"\"\<]\>\""}], ",", "\[IndentingNewLine]", "Plus", ",",
RowBox[{"StringJoin", "[",
RowBox[{"ToString", "/@",
RowBox[{"Riffle", "[",
RowBox[{"args", ",", "\"\<+\>\""}], "]"}]}], "]"}], ",",
"\[IndentingNewLine]", "Times", ",",
RowBox[{"StringJoin", "[",
RowBox[{"ToString", "/@",
RowBox[{"Riffle", "[",
RowBox[{"args", ",", "\"\<.*\>\""}], "]"}]}], "]"}], ",",
"\[IndentingNewLine]", "Power", ",",
RowBox[{"StringJoin", "[",
RowBox[{"ToString", "/@",
RowBox[{"Riffle", "[",
RowBox[{"args", ",", "\"\<.^\>\""}], "]"}]}], "]"}], ",",
"\[IndentingNewLine]", "Rational", ",",
RowBox[{"StringJoin", "[",
RowBox[{"ToString", "/@",
RowBox[{"Riffle", "[",
RowBox[{"args", ",", "\"\</\>\""}], "]"}]}], "]"}], ",",
"\[IndentingNewLine]", "_", ",",
RowBox[{
RowBox[{"ToString", "@", "head"}], "<>", "\"\<(\>\"", "<>",
RowBox[{"StringJoin", "[",
RowBox[{"ToString", "/@",
RowBox[{"Riffle", "[",
RowBox[{"args", ",", "\"\<,\>\""}], "]"}]}], "]"}], "<>",
"\"\<)\>\""}]}], "\[IndentingNewLine]", "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"set", "[", "r", "]"}], ";", "\[IndentingNewLine]",
RowBox[{"get", "[", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}],
";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"{",
RowBox[{"data", ",",
RowBox[{"{",
RowBox[{"symbols", ",", "strings", ",", "floats"}], "}"}]}], "}"}],
"=",
RowBox[{"SubExprPostfixPool", "@",
RowBox[{"ToSubExprPostfix", "[",
RowBox[{"expr", "/.",
RowBox[{"{",
RowBox[{
RowBox[{"Pi", "\[Rule]", "pi"}], ",",
RowBox[{"\[Pi]", "\[Rule]", "pi"}], ",",
RowBox[{"Sign", "\[Rule]", "sign"}], ",",
RowBox[{"Cos", "\[Rule]", "cos"}], ",",
RowBox[{"Sin", "\[Rule]", "sin"}]}], "}"}]}], "]"}]}]}], ";",
"\[IndentingNewLine]",
RowBox[{"print", "/@",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"StringJoin", "[",
RowBox[{"\"\<S\>\"", ",",
RowBox[{"ToString", "[", "i", "]"}], ",", "\"\<='\>\"", ",",
RowBox[{
"strings", "\[LeftDoubleBracket]", "i", "\[RightDoubleBracket]"}],
",", "\"\<';\>\""}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",",
RowBox[{"Length", "@", "strings"}]}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"print", "/@",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"StringJoin", "[",
RowBox[{"\"\<F\>\"", ",",
RowBox[{"ToString", "[",
RowBox[{"i", ",", "CForm"}], "]"}], ",", "\"\<=\>\"", ",",
RowBox[{"ToString", "@",
RowBox[{
"floats", "\[LeftDoubleBracket]", "i",
"\[RightDoubleBracket]"}]}], ",", "\"\<;\>\""}], "]"}], ",",
RowBox[{"{",
RowBox[{"i", ",",
RowBox[{"Length", "@", "floats"}]}], "}"}]}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"Do", "[",
RowBox[{
RowBox[{
RowBox[{"Switch", "[",
RowBox[{
RowBox[{"Head", "@", "v"}], ",", "\[IndentingNewLine]", "$", ",",
RowBox[{"get", "@",
RowBox[{"First", "@", "v"}]}], ",", "\[IndentingNewLine]", "$1",
",",
RowBox[{"push", "[",
RowBox[{"symbols", "\[LeftDoubleBracket]",
RowBox[{"First", "@", "v"}], "\[RightDoubleBracket]"}], "]"}],
",", "\[IndentingNewLine]", "$2", ",",
RowBox[{"push", "[",
RowBox[{"\"\<S\>\"", "<>",
RowBox[{"ToString", "@",
RowBox[{"First", "@", "v"}]}]}], "]"}], ",",
"\[IndentingNewLine]", "$3", ",",
RowBox[{"push", "[",
RowBox[{"\"\<F\>\"", "<>",
RowBox[{"ToString", "@",
RowBox[{"First", "@", "v"}]}]}], "]"}], ",",
"\[IndentingNewLine]", "Function", ",",
RowBox[{"func", "@",
RowBox[{"First", "@", "v"}]}], ",", "\[IndentingNewLine]",
"Integer", ",",
RowBox[{
RowBox[{"push", "@", "v"}], ";",
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"IntSize", "@", "v"}], ">", "2"}], ",",
RowBox[{"set", "[", "v", "]"}]}], "]"}]}]}],
"\[IndentingNewLine]", "]"}], ";"}], ",",
RowBox[{"{",
RowBox[{"v", ",", "data"}], "}"}]}], "]"}], ";",
"\[IndentingNewLine]",
RowBox[{"{",
RowBox[{"str", ",",
RowBox[{
"stack", "\[LeftDoubleBracket]", "top", "\[RightDoubleBracket]"}]}],
"}"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}]}], "Input",
InitializationCell->True,
CellChangeTimes->{{3.684466269096936*^9, 3.684466311808379*^9}, {
3.6844663605991697`*^9, 3.6844664790629454`*^9}, {3.6844665736203537`*^9,
3.6844666053141665`*^9}, {3.684466697114417*^9, 3.6844667061369333`*^9}, {
3.684466742570017*^9, 3.684466754718712*^9}, {3.6844668112399445`*^9,
3.684466813130053*^9}, {3.684466947088715*^9, 3.684466970675064*^9}, {
3.6844673003489203`*^9, 3.6844673141657104`*^9}, {3.6844679988068695`*^9,
3.6844680141847496`*^9}, 3.6844680620894895`*^9, {3.6844681214108825`*^9,
3.6844681223289347`*^9}, {3.684468152877682*^9, 3.6844681722397895`*^9}, {