1
2(SDEFUN |GALFACT;useEisensteinCriterion?;B;1| (($ |Boolean|)) (QREFELT $ 11))
3
4(SDEFUN |GALFACT;useEisensteinCriterion;2B;2| ((|b| |Boolean|) ($ |Boolean|))
5        (SPROG ((|#G5| (|Boolean|)) (|#G4| (|Boolean|)))
6               (SEQ
7                (PROGN
8                 (LETT |#G4| |b|)
9                 (LETT |#G5| (QREFELT $ 11))
10                 (SETELT $ 11 |#G4|)
11                 (LETT |b| |#G5|))
12                (EXIT |b|))))
13
14(SDEFUN |GALFACT;tryFunctionalDecomposition?;B;3| (($ |Boolean|))
15        (QREFELT $ 10))
16
17(SDEFUN |GALFACT;tryFunctionalDecomposition;2B;4|
18        ((|b| |Boolean|) ($ |Boolean|))
19        (SPROG ((|#G8| (|Boolean|)) (|#G7| (|Boolean|)))
20               (SEQ
21                (PROGN
22                 (LETT |#G7| |b|)
23                 (LETT |#G8| (QREFELT $ 10))
24                 (SETELT $ 10 |#G7|)
25                 (LETT |b| |#G8|))
26                (EXIT |b|))))
27
28(SDEFUN |GALFACT;useSingleFactorBound?;B;5| (($ |Boolean|)) (QREFELT $ 9))
29
30(SDEFUN |GALFACT;useSingleFactorBound;2B;6| ((|b| |Boolean|) ($ |Boolean|))
31        (SPROG ((|#G11| (|Boolean|)) (|#G10| (|Boolean|)))
32               (SEQ
33                (PROGN
34                 (LETT |#G10| |b|)
35                 (LETT |#G11| (QREFELT $ 9))
36                 (SETELT $ 9 |#G10|)
37                 (LETT |b| |#G11|))
38                (EXIT |b|))))
39
40(SDEFUN |GALFACT;stopMusserTrials;Pi;7| (($ |PositiveInteger|)) (QREFELT $ 8))
41
42(SDEFUN |GALFACT;stopMusserTrials;2Pi;8|
43        ((|n| |PositiveInteger|) ($ |PositiveInteger|))
44        (SPROG ((|#G14| (|PositiveInteger|)) (|#G13| (|PositiveInteger|)))
45               (SEQ
46                (PROGN
47                 (LETT |#G13| |n|)
48                 (LETT |#G14| (QREFELT $ 8))
49                 (SETELT $ 8 |#G13|)
50                 (LETT |n| |#G14|))
51                (EXIT |n|))))
52
53(SDEFUN |GALFACT;musserTrials;Pi;9| (($ |PositiveInteger|)) (QREFELT $ 7))
54
55(SDEFUN |GALFACT;musserTrials;2Pi;10|
56        ((|n| |PositiveInteger|) ($ |PositiveInteger|))
57        (SPROG ((|#G17| (|PositiveInteger|)) (|#G16| (|PositiveInteger|)))
58               (SEQ
59                (PROGN
60                 (LETT |#G16| |n|)
61                 (LETT |#G17| (QREFELT $ 7))
62                 (SETELT $ 7 |#G16|)
63                 (LETT |n| |#G17|))
64                (EXIT |n|))))
65
66(SDEFUN |GALFACT;eisensteinIrreducible?;UPB;11| ((|f| UP) ($ |Boolean|))
67        (SPROG
68         ((#1=#:G489 NIL) (#2=#:G490 NIL) (|p| NIL) (|rf| (UP))
69          (|tc| #3=(|Integer|)) (|lc| #3#) (|c| (|Integer|)))
70         (SEQ
71          (EXIT
72           (SEQ (LETT |rf| (SPADCALL |f| (QREFELT $ 24)))
73                (LETT |c| (SPADCALL |rf| (QREFELT $ 26)))
74                (EXIT
75                 (COND ((OR (ZEROP |c|) (SPADCALL |c| (QREFELT $ 27))) NIL)
76                       ('T
77                        (SEQ (LETT |lc| (SPADCALL |f| (QREFELT $ 28)))
78                             (LETT |tc| |lc|)
79                             (SEQ G190
80                                  (COND
81                                   ((NULL
82                                     (NULL (SPADCALL |rf| (QREFELT $ 29))))
83                                    (GO G191)))
84                                  (SEQ
85                                   (LETT |tc| (SPADCALL |rf| (QREFELT $ 28)))
86                                   (EXIT
87                                    (LETT |rf|
88                                          (SPADCALL |rf| (QREFELT $ 24)))))
89                                  NIL (GO G190) G191 (EXIT NIL))
90                             (SEQ (LETT |p| NIL)
91                                  (LETT #2#
92                                        (SPADCALL (SPADCALL |c| (QREFELT $ 31))
93                                                  (QREFELT $ 36)))
94                                  G190
95                                  (COND
96                                   ((OR (ATOM #2#)
97                                        (PROGN (LETT |p| (CAR #2#)) NIL))
98                                    (GO G191)))
99                                  (SEQ
100                                   (EXIT
101                                    (COND
102                                     ((EQL (QVELT |p| 2) 1)
103                                      (COND
104                                       ((NULL (ZEROP (REM |lc| (QVELT |p| 1))))
105                                        (COND
106                                         ((NULL
107                                           (ZEROP
108                                            (REM |tc| (EXPT (QVELT |p| 1) 2))))
109                                          (PROGN
110                                           (LETT #1# 'T)
111                                           (GO #4=#:G488))))))))))
112                                  (LETT #2# (CDR #2#)) (GO G190) G191
113                                  (EXIT NIL))
114                             (EXIT NIL)))))))
115          #4# (EXIT #1#))))
116
117(SDEFUN |GALFACT;numberOfFactors;LNni;12|
118        ((|ddlist| |List|
119          (|Record| (|:| |factor| UP) (|:| |degree| (|Integer|))))
120         ($ |NonNegativeInteger|))
121        (SPROG
122         ((|n| (|NonNegativeInteger|)) (#1=#:G492 NIL) (|d| (|Integer|))
123          (#2=#:G499 NIL) (|dd| NIL))
124         (SEQ (LETT |n| 0) (LETT |d| 0)
125              (SEQ (LETT |dd| NIL) (LETT #2# |ddlist|) G190
126                   (COND
127                    ((OR (ATOM #2#) (PROGN (LETT |dd| (CAR #2#)) NIL))
128                     (GO G191)))
129                   (SEQ
130                    (EXIT
131                     (LETT |n|
132                           (+ |n|
133                              (COND
134                               ((ZEROP
135                                 (LETT |d|
136                                       (SPADCALL (QCAR |dd|) (QREFELT $ 39))))
137                                1)
138                               ('T
139                                (PROG1 (LETT #1# (QUOTIENT2 |d| (QCDR |dd|)))
140                                  (|check_subtype2| (>= #1# 0)
141                                                    '(|NonNegativeInteger|)
142                                                    '(|Integer|) #1#))))))))
143                   (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
144              (EXIT |n|))))
145
146(SDEFUN |GALFACT;shiftSet|
147        ((|s| |Set| (|NonNegativeInteger|)) (|shift| |NonNegativeInteger|)
148         ($ |Set| (|NonNegativeInteger|)))
149        (SPROG NIL
150               (SPADCALL (CONS #'|GALFACT;shiftSet!0| (VECTOR $ |shift|)) |s|
151                         (QREFELT $ 46))))
152
153(SDEFUN |GALFACT;shiftSet!0| ((|e| NIL) ($$ NIL))
154        (PROG (|shift| $)
155          (LETT |shift| (QREFELT $$ 1))
156          (LETT $ (QREFELT $$ 0))
157          (RETURN (PROGN (SPADCALL |e| |shift| (QREFELT $ 43))))))
158
159(SDEFUN |GALFACT;reductum| ((|n| |Integer|) ($ |Integer|))
160        (- |n| (ASH 1 (- (INTEGER-LENGTH |n|) 1))))
161
162(SDEFUN |GALFACT;seed| ((|level| |Integer|) ($ |Integer|))
163        (- (ASH 1 |level|) 1))
164
165(SDEFUN |GALFACT;nextRecNum|
166        ((|levels| |NonNegativeInteger|) (|level| |Integer|) (|n| |Integer|)
167         ($ |Union| (|Integer|) "End of level"))
168        (SPROG
169         ((|b| (|Integer|)) (|lr| #1=(|Integer|)) (#2=#:G512 NIL) (|l| #1#))
170         (SEQ
171          (EXIT
172           (SEQ
173            (SEQ (LETT |l| (INTEGER-LENGTH |n|))
174                 (EXIT
175                  (COND
176                   ((< |l| |levels|)
177                    (PROGN
178                     (LETT #2# (CONS 0 (+ |n| (ASH 1 (- |l| 1)))))
179                     (GO #3=#:G511))))))
180            (EXIT
181             (COND
182              ((EQL |n| (ASH (|GALFACT;seed| |level| $) (- |levels| |level|)))
183               (CONS 1 "End of level"))
184              ('T
185               (SEQ (LETT |b| 1)
186                    (SEQ G190
187                         (COND
188                          ((NULL
189                            (EQL (- |l| |b|)
190                                 (LETT |lr|
191                                       (INTEGER-LENGTH
192                                        (LETT |n|
193                                              (|GALFACT;reductum| |n| $))))))
194                           (GO G191)))
195                         (SEQ (EXIT (LETT |b| (+ |b| 1)))) NIL (GO G190) G191
196                         (EXIT NIL))
197                    (EXIT
198                     (CONS 0
199                           (+ (|GALFACT;reductum| |n| $)
200                              (ASH (|GALFACT;seed| (+ |b| 1) $) |lr|))))))))))
201          #3# (EXIT #2#))))
202
203(SDEFUN |GALFACT;fullSet|
204        ((|n| |NonNegativeInteger|) ($ |Set| (|NonNegativeInteger|)))
205        (SPROG ((#1=#:G516 NIL) (|i| NIL) (#2=#:G515 NIL))
206               (SEQ
207                (SPADCALL
208                 (PROGN
209                  (LETT #2# NIL)
210                  (SEQ (LETT |i| 0) (LETT #1# |n|) G190
211                       (COND ((|greater_SI| |i| #1#) (GO G191)))
212                       (SEQ (EXIT (LETT #2# (CONS |i| #2#))))
213                       (LETT |i| (|inc_SI| |i|)) (GO G190) G191
214                       (EXIT (NREVERSE #2#))))
215                 (QREFELT $ 49)))))
216
217(SDEFUN |GALFACT;is_mod_coprime?|
218        ((|pol1| UP) (|pol2| UP) (|p| |Integer|) (|small| |Boolean|)
219         ($ |Boolean|))
220        (SPROG ((|vg| (|U32Vector|)) (|v2| #1=(|U32Vector|)) (|v1| #1#))
221               (SEQ
222                (COND
223                 (|small|
224                  (SEQ
225                   (LETT |v1|
226                         (SPADCALL (SPADCALL |pol1| (QREFELT $ 51)) |p|
227                                   (QREFELT $ 54)))
228                   (LETT |v2|
229                         (SPADCALL (SPADCALL |pol2| (QREFELT $ 51)) |p|
230                                   (QREFELT $ 54)))
231                   (LETT |vg| (SPADCALL |v1| |v2| |p| (QREFELT $ 55)))
232                   (EXIT (<= (SPADCALL |vg| (QREFELT $ 56)) 0))))
233                 ('T
234                  (ZEROP
235                   (SPADCALL (SPADCALL |pol1| |pol2| |p| (QREFELT $ 58))
236                             (QREFELT $ 39))))))))
237
238(SDEFUN |GALFACT;add_degs|
239        ((|deg1| |NonNegativeInteger|) (|deg2| |NonNegativeInteger|)
240         (|res| |List| (|NonNegativeInteger|))
241         ($ |List| (|NonNegativeInteger|)))
242        (SPROG ((#1=#:G522 NIL) (|i| NIL))
243               (SEQ
244                (COND ((EQL |deg2| 0) |res|)
245                      ('T
246                       (SEQ
247                        (SEQ (LETT |i| 1) (LETT #1# (QUOTIENT2 |deg1| |deg2|))
248                             G190 (COND ((|greater_SI| |i| #1#) (GO G191)))
249                             (SEQ (EXIT (LETT |res| (CONS |deg2| |res|))))
250                             (LETT |i| (|inc_SI| |i|)) (GO G190) G191
251                             (EXIT NIL))
252                        (EXIT |res|)))))))
253
254(SDEFUN |GALFACT;do_separate|
255        ((|sfl| |List| (|Mapping| #1=(|List| (|U32Vector|)))) (|c| |Integer|)
256         ($ |List| UP))
257        (SPROG
258         ((|res| (|List| UP)) (#2=#:G529 NIL) (|v| NIL) (|vl| #1#)
259          (#3=#:G528 NIL) (|sf| NIL))
260         (SEQ (LETT |res| NIL)
261              (SEQ (LETT |sf| NIL) (LETT #3# |sfl|) G190
262                   (COND
263                    ((OR (ATOM #3#) (PROGN (LETT |sf| (CAR #3#)) NIL))
264                     (GO G191)))
265                   (SEQ (LETT |vl| (SPADCALL |sf|))
266                        (EXIT
267                         (SEQ (LETT |v| NIL) (LETT #2# |vl|) G190
268                              (COND
269                               ((OR (ATOM #2#)
270                                    (PROGN (LETT |v| (CAR #2#)) NIL))
271                                (GO G191)))
272                              (SEQ
273                               (EXIT
274                                (LETT |res|
275                                      (CONS
276                                       (SPADCALL (SPADCALL |v| (QREFELT $ 60))
277                                                 (QREFELT $ 61))
278                                       |res|))))
279                              (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))))
280                   (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL))
281              (EXIT (CONS (SPADCALL |c| (QREFELT $ 62)) |res|)))))
282
283(SDEFUN |GALFACT;do_ddfact|
284        ((|pol| UP) (|p| |Integer|) (|small| |Boolean|)
285         ($ |Record| (|:| |dd_list| (|List| (|NonNegativeInteger|)))
286          (|:| |separate_factors| (|Mapping| (|List| UP)))))
287        (SPROG
288         ((|degs| (|List| (|NonNegativeInteger|))) (#1=#:G540 NIL)
289          (#2=#:G547 NIL) (|rl| NIL)
290          (|res1|
291           (|List| (|Record| (|:| |factor| UP) (|:| |degree| (|Integer|)))))
292          (|sfl| (|List| (|Mapping| (|List| (|U32Vector|))))) (#3=#:G534 NIL)
293          (#4=#:G546 NIL) (|fr| NIL)
294          (|ul1|
295           (|List|
296            (|Record| (|:| |poly| (|U32Vector|))
297                      (|:| |degree| (|NonNegativeInteger|))
298                      (|:| |separate_factors|
299                           (|Mapping| (|List| (|U32Vector|)))))))
300          (|ci| (|Integer|)) (|c| (|Integer|)) (|dpol| (|Integer|))
301          (|v| (|U32Vector|)))
302         (SEQ (LETT |degs| NIL)
303              (EXIT
304               (COND
305                (|small|
306                 (SEQ
307                  (LETT |v|
308                        (SPADCALL (SPADCALL |pol| (QREFELT $ 51)) |p|
309                                  (QREFELT $ 54)))
310                  (LETT |dpol| (SPADCALL |v| (QREFELT $ 56)))
311                  (LETT |c| (ELT_U32 |v| |dpol|))
312                  (COND
313                   ((SPADCALL |c| 1 (QREFELT $ 63))
314                    (SEQ (LETT |ci| (SPADCALL |c| |p| (QREFELT $ 64)))
315                         (EXIT
316                          (SPADCALL |v| |dpol| |ci| |p| (QREFELT $ 66))))))
317                  (LETT |ul1| (SPADCALL |v| |p| (QREFELT $ 71)))
318                  (LETT |sfl| NIL)
319                  (SEQ (LETT |fr| NIL) (LETT #4# |ul1|) G190
320                       (COND
321                        ((OR (ATOM #4#) (PROGN (LETT |fr| (CAR #4#)) NIL))
322                         (GO G191)))
323                       (SEQ
324                        (LETT |degs|
325                              (|GALFACT;add_degs|
326                               (PROG1
327                                   (LETT #3#
328                                         (SPADCALL (QVELT |fr| 0)
329                                                   (QREFELT $ 56)))
330                                 (|check_subtype2| (>= #3# 0)
331                                                   '(|NonNegativeInteger|)
332                                                   '(|Integer|) #3#))
333                               (QVELT |fr| 1) |degs| $))
334                        (EXIT (LETT |sfl| (CONS (QVELT |fr| 2) |sfl|))))
335                       (LETT #4# (CDR #4#)) (GO G190) G191 (EXIT NIL))
336                  (EXIT
337                   (CONS |degs|
338                         (CONS #'|GALFACT;do_ddfact!0|
339                               (VECTOR $ |c| |sfl|))))))
340                ('T
341                 (SEQ (LETT |res1| (SPADCALL |pol| |p| (QREFELT $ 72)))
342                      (SEQ (LETT |rl| NIL) (LETT #2# |res1|) G190
343                           (COND
344                            ((OR (ATOM #2#) (PROGN (LETT |rl| (CAR #2#)) NIL))
345                             (GO G191)))
346                           (SEQ
347                            (EXIT
348                             (LETT |degs|
349                                   (|GALFACT;add_degs|
350                                    (SPADCALL (QCAR |rl|) (QREFELT $ 39))
351                                    (PROG1 (LETT #1# (QCDR |rl|))
352                                      (|check_subtype2| (>= #1# 0)
353                                                        '(|NonNegativeInteger|)
354                                                        '(|Integer|) #1#))
355                                    |degs| $))))
356                           (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
357                      (EXIT
358                       (CONS |degs|
359                             (CONS #'|GALFACT;do_ddfact!1|
360                                   (VECTOR $ |p| |res1|)))))))))))
361
362(SDEFUN |GALFACT;do_ddfact!1| (($$ NIL))
363        (PROG (|res1| |p| $)
364          (LETT |res1| (QREFELT $$ 2))
365          (LETT |p| (QREFELT $$ 1))
366          (LETT $ (QREFELT $$ 0))
367          (RETURN (PROGN (SPADCALL |res1| |p| (QREFELT $ 74))))))
368
369(SDEFUN |GALFACT;do_ddfact!0| (($$ NIL))
370        (PROG (|sfl| |c| $)
371          (LETT |sfl| (QREFELT $$ 2))
372          (LETT |c| (QREFELT $$ 1))
373          (LETT $ (QREFELT $$ 0))
374          (RETURN (PROGN (|GALFACT;do_separate| |sfl| |c| $)))))
375
376(SDEFUN |GALFACT;modularFactor;UPSR;22|
377        ((|p| UP) (|d| |Set| (|NonNegativeInteger|))
378         ($ |Record| (|:| |prime| (|Integer|)) (|:| |factors| (|List| UP))))
379        (SPROG
380         ((|fl| (|List| UP)) (|cprime| (|Integer|)) (|res_prime| (|Integer|))
381          (|dd_res|
382           #1=(|Record| (|:| |dd_list| (|List| (|NonNegativeInteger|)))
383                        (|:| |separate_factors| (|Mapping| (|List| UP)))))
384          (|nf| (|NonNegativeInteger|)) (|nf1| (|NonNegativeInteger|))
385          (#2=#:G564 NIL) (|s| (|Set| (|NonNegativeInteger|))) (#3=#:G566 NIL)
386          (|degfact| (|NonNegativeInteger|))
387          (|ddlist| (|List| (|NonNegativeInteger|))) (|dd_res1| #1#)
388          (|small| (|Boolean|)) (#4=#:G565 NIL) (|i| NIL) (|diffp| (UP))
389          (|degp| #5=(|NonNegativeInteger|))
390          (|dirred| (|Set| (|NonNegativeInteger|))) (|n| #5#))
391         (SEQ
392          (EXIT
393           (COND
394            ((NULL (EQL (ABS (SPADCALL |p| (QREFELT $ 26))) 1))
395             (|error| "modularFactor: the polynomial is not primitive."))
396            ('T
397             (COND
398              ((ZEROP (LETT |n| (SPADCALL |p| (QREFELT $ 39))))
399               (CONS 0 (LIST |p|)))
400              ('T
401               (SEQ (LETT |cprime| 2)
402                    (LETT |dirred| (SPADCALL (LIST 0 |n|) (QREFELT $ 49)))
403                    (LETT |s| (SPADCALL (QREFELT $ 75))) (LETT |ddlist| NIL)
404                    (LETT |degfact| 0)
405                    (LETT |degp| (SPADCALL |p| (QREFELT $ 39)))
406                    (LETT |nf| (+ (+ |degp| (QREFELT $ 8)) 1))
407                    (LETT |diffp| (SPADCALL |p| (QREFELT $ 76)))
408                    (LETT |small| 'T)
409                    (SEQ (LETT |i| 1) (LETT #4# (QREFELT $ 7)) G190
410                         (COND ((|greater_SI| |i| #4#) (GO G191)))
411                         (SEQ
412                          (EXIT
413                           (COND
414                            ((> |nf| (QREFELT $ 8))
415                             (SEQ
416                              (COND
417                               (|small|
418                                (COND
419                                 ((NULL
420                                   (< (* (* |degp| |cprime|) |cprime|)
421                                      18446744073709551616))
422                                  (LETT |small| NIL)))))
423                              (SEQ G190
424                                   (COND
425                                    ((NULL
426                                      (COND
427                                       ((ZEROP
428                                         (REM (SPADCALL |p| (QREFELT $ 28))
429                                              |cprime|))
430                                        'T)
431                                       ('T
432                                        (NULL
433                                         (|GALFACT;is_mod_coprime?| |p| |diffp|
434                                          |cprime| |small| $)))))
435                                     (GO G191)))
436                                   (SEQ
437                                    (EXIT
438                                     (LETT |cprime|
439                                           (SPADCALL |cprime|
440                                                     (QREFELT $ 78)))))
441                                   NIL (GO G190) G191 (EXIT NIL))
442                              (LETT |dd_res1|
443                                    (|GALFACT;do_ddfact| |p| |cprime| |small|
444                                     $))
445                              (LETT |ddlist| (QCAR |dd_res1|))
446                              (LETT |s| (SPADCALL (LIST 0) (QREFELT $ 49)))
447                              (SEQ (LETT |degfact| NIL) (LETT #3# |ddlist|)
448                                   G190
449                                   (COND
450                                    ((OR (ATOM #3#)
451                                         (PROGN
452                                          (LETT |degfact| (CAR #3#))
453                                          NIL))
454                                     (GO G191)))
455                                   (SEQ
456                                    (EXIT
457                                     (LETT |s|
458                                           (SPADCALL |s|
459                                                     (|GALFACT;shiftSet| |s|
460                                                      |degfact| $)
461                                                     (QREFELT $ 79)))))
462                                   (LETT #3# (CDR #3#)) (GO G190) G191
463                                   (EXIT NIL))
464                              (LETT |d| (SPADCALL |d| |s| (QREFELT $ 80)))
465                              (EXIT
466                               (COND
467                                ((SPADCALL |d| |dirred| (QREFELT $ 81))
468                                 (PROGN
469                                  (LETT #2# (CONS 0 (LIST |p|)))
470                                  (GO #6=#:G563)))
471                                ('T
472                                 (SEQ
473                                  (LETT |nf1|
474                                        (SPADCALL |ddlist| (QREFELT $ 82)))
475                                  (COND
476                                   ((< |nf1| |nf|)
477                                    (SEQ (LETT |nf| |nf1|)
478                                         (LETT |dd_res| |dd_res1|)
479                                         (EXIT (LETT |res_prime| |cprime|))))
480                                   ((EQL |nf1| |nf|)
481                                    (COND
482                                     ((> |cprime| |res_prime|)
483                                      (SEQ (LETT |nf| |nf1|)
484                                           (LETT |dd_res| |dd_res1|)
485                                           (EXIT
486                                            (LETT |res_prime| |cprime|)))))))
487                                  (EXIT
488                                   (LETT |cprime|
489                                         (SPADCALL |cprime|
490                                                   (QREFELT $ 78)))))))))))))
491                         (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
492                    (LETT |fl| (SPADCALL (QCDR |dd_res|)))
493                    (EXIT (CONS |res_prime| |fl|))))))))
494          #6# (EXIT #2#))))
495
496(SDEFUN |GALFACT;degreePartition;LM;23|
497        ((|ddlist| |List|
498          (|Record| (|:| |factor| UP) (|:| |degree| (|Integer|))))
499         ($ |Multiset| (|NonNegativeInteger|)))
500        (SPROG
501         ((|dp| (|Multiset| (|NonNegativeInteger|)))
502          (|dd| #1=(|NonNegativeInteger|)) (#2=#:G568 NIL) (|d| #1#)
503          (#3=#:G574 NIL) (|f| NIL))
504         (SEQ (LETT |dp| (SPADCALL (QREFELT $ 86))) (LETT |d| 0) (LETT |dd| 0)
505              (SEQ (LETT |f| NIL) (LETT #3# |ddlist|) G190
506                   (COND
507                    ((OR (ATOM #3#) (PROGN (LETT |f| (CAR #3#)) NIL))
508                     (GO G191)))
509                   (SEQ
510                    (EXIT
511                     (COND
512                      ((ZEROP (LETT |d| (SPADCALL (QCAR |f|) (QREFELT $ 39))))
513                       (LETT |dp| (SPADCALL 0 |dp| (QREFELT $ 87))))
514                      ('T
515                       (SEQ
516                        (LETT |dd|
517                              (PROG1 (LETT #2# (QCDR |f|))
518                                (|check_subtype2| (>= #2# 0)
519                                                  '(|NonNegativeInteger|)
520                                                  '(|Integer|) #2#)))
521                        (EXIT
522                         (LETT |dp|
523                               (SPADCALL |dd| |dp| (QUOTIENT2 |d| |dd|)
524                                         (QREFELT $ 88)))))))))
525                   (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL))
526              (EXIT |dp|))))
527
528(SDEFUN |GALFACT;sel_set|
529        ((|d| |Set| (|NonNegativeInteger|)) (|n| |NonNegativeInteger|)
530         (|m| |NonNegativeInteger|) ($ |Set| (|NonNegativeInteger|)))
531        (SPROG ((|nm| (|NonNegativeInteger|)))
532               (SEQ
533                (COND ((EQL |n| 0) (SPADCALL (LIST 0) (QREFELT $ 49)))
534                      ('T
535                       (SEQ (LETT |nm| (* |n| |m|))
536                            (EXIT
537                             (SPADCALL
538                              (CONS #'|GALFACT;sel_set!0| (VECTOR |n| $ |nm|))
539                              |d| (QREFELT $ 95)))))))))
540
541(SDEFUN |GALFACT;sel_set!0| ((|x| NIL) ($$ NIL))
542        (PROG (|nm| $ |n|)
543          (LETT |nm| (QREFELT $$ 2))
544          (LETT $ (QREFELT $$ 1))
545          (LETT |n| (QREFELT $$ 0))
546          (RETURN
547           (PROGN
548            (COND
549             ((SPADCALL |x| |nm| (QREFELT $ 90))
550              (SPADCALL (SPADCALL |x| |n| (QREFELT $ 91)) (|spadConstant| $ 92)
551                        (QREFELT $ 93)))
552             ('T NIL))))))
553
554(SDEFUN |GALFACT;henselfact|
555        ((|f| UP) (|pdecomp| |Boolean|) (|d| |Set| (|NonNegativeInteger|))
556         ($ . #1=(|List| UP)))
557        (SPROG
558         ((#2=#:G589 NIL) (#3=#:G588 #1#) (#4=#:G590 #1#) (#5=#:G595 NIL)
559          (|g| NIL) (|d1| (|Set| (|NonNegativeInteger|)))
560          (|dh| (|NonNegativeInteger|))
561          (|lrf| (|Record| (|:| |left| UP) (|:| |right| UP)))
562          (|b| (|PositiveInteger|)) (#6=#:G585 NIL) (|cprime| #7=(|Integer|))
563          (|m| (|Record| (|:| |prime| #7#) (|:| |factors| (|List| UP))))
564          (|cf| (|Union| (|Record| (|:| |left| UP) (|:| |right| UP)) "failed"))
565          (#8=#:G594 NIL))
566         (SEQ
567          (EXIT
568           (SEQ
569            (COND
570             ((SPADCALL |f| (QREFELT $ 97))
571              (PROGN (LETT #8# (LIST |f|)) (GO #9=#:G593)))
572             ((QREFELT $ 11)
573              (COND
574               ((SPADCALL |f| (QREFELT $ 37))
575                (PROGN (LETT #8# (LIST |f|)) (GO #9#))))))
576            (COND
577             (|pdecomp|
578              (COND ((QREFELT $ 10) (LETT |cf| (SPADCALL |f| (QREFELT $ 101))))
579                    (#10='T (LETT |cf| (CONS 1 #11="failed")))))
580             (#10# (LETT |cf| (CONS 1 #11#))))
581            (EXIT
582             (COND
583              ((QEQCAR |cf| 1)
584               (SEQ (LETT |m| (SPADCALL |f| |d| (QREFELT $ 84)))
585                    (EXIT
586                     (COND ((ZEROP (LETT |cprime| (QCAR |m|))) (QCDR |m|))
587                           (#10#
588                            (SEQ
589                             (LETT |b|
590                                   (PROG1
591                                       (LETT #6#
592                                             (*
593                                              (* 2
594                                                 (SPADCALL |f| (QREFELT $ 28)))
595                                              (SPADCALL |f| (QREFELT $ 103))))
596                                     (|check_subtype2| (> #6# 0)
597                                                       '(|PositiveInteger|)
598                                                       '(|Integer|) #6#)))
599                             (EXIT
600                              (SPADCALL |f| (QCDR |m|) |cprime| |b|
601                                        (QREFELT $ 105)))))))))
602              (#10#
603               (SEQ (LETT |lrf| (QCDR |cf|))
604                    (LETT |dh| (SPADCALL (QCDR |lrf|) (QREFELT $ 39)))
605                    (LETT |d1| (|GALFACT;divideSet| |d| |dh| $))
606                    (EXIT
607                     (PROGN
608                      (LETT #2# NIL)
609                      (SEQ (LETT |g| NIL)
610                           (LETT #5#
611                                 (|GALFACT;henselfact| (QCAR |lrf|) 'T |d1| $))
612                           G190
613                           (COND
614                            ((OR (ATOM #5#) (PROGN (LETT |g| (CAR #5#)) NIL))
615                             (GO G191)))
616                           (SEQ
617                            (EXIT
618                             (PROGN
619                              (LETT #4#
620                                    (|GALFACT;henselfact|
621                                     (SPADCALL |g| (QCDR |lrf|)
622                                               (QREFELT $ 106))
623                                     NIL
624                                     (|GALFACT;sel_set| |d|
625                                      (SPADCALL |g| (QREFELT $ 39)) |dh| $)
626                                     $))
627                              (COND
628                               (#2#
629                                (LETT #3# (SPADCALL #3# #4# (QREFELT $ 107))))
630                               ('T (PROGN (LETT #3# #4#) (LETT #2# 'T)))))))
631                           (LETT #5# (CDR #5#)) (GO G190) G191 (EXIT NIL))
632                      (COND (#2# #3#) (#10# NIL))))))))))
633          #9# (EXIT #8#))))
634
635(SDEFUN |GALFACT;henselfact1| ((|f| UP) (|pdecomp| |Boolean|) ($ |List| UP))
636        (|GALFACT;henselfact| |f| |pdecomp|
637         (|GALFACT;fullSet| (SPADCALL |f| (QREFELT $ 39)) $) $))
638
639(SDEFUN |GALFACT;completeFactor|
640        ((|f| UP) (|lf| |List| UP) (|cprime| |Integer|)
641         (|pk| |PositiveInteger|) (|r| |NonNegativeInteger|)
642         (|d| |Set| (|NonNegativeInteger|)) ($ |List| UP))
643        (SPROG
644         ((|level| (|Integer|)) (|found?| (|Boolean|))
645          (|levels| (|NonNegativeInteger|))
646          (|ic| (|Union| (|Integer|) "End of level")) (#1=#:G661 NIL)
647          (#2=#:G647 NIL)
648          (|llg|
649           (|Record| (|:| |plist| (|List| UP)) (|:| |modulo| (|Integer|))))
650          (|b| (|PositiveInteger|)) (#3=#:G646 NIL) (|ltrue| #4=(|List| UP))
651          (|degf| #5=(|NonNegativeInteger|)) (#6=#:G643 NIL) (|lg| #4#)
652          (|gpk| (|PositiveInteger|)) (#7=#:G630 NIL) (#8=#:G627 NIL)
653          (#9=#:G626 NIL) (|rg| #5#) (#10=#:G625 NIL)
654          (|dg| (|Set| (|NonNegativeInteger|))) (|f0| (|Integer|))
655          (|lc| (|Integer|)) (#11=#:G615 NIL) (#12=#:G613 NIL)
656          (|nb| (|Integer|)) (#13=#:G664 NIL) (|j| NIL)
657          (|f1| (|Union| UP "failed")) (|g| (UP)) (#14=#:G663 NIL)
658          (|g0| (|Integer|)) (|degg| #5#) (#15=#:G662 NIL) (|i| (|Integer|))
659          (#16=#:G505 NIL))
660         (SEQ
661          (EXIT
662           (SEQ (LETT |lc| (SPADCALL |f| (QREFELT $ 28)))
663                (LETT |f0| (SPADCALL |f| 0 (QREFELT $ 108))) (LETT |ltrue| NIL)
664                (LETT |found?| 'T) (LETT |degf| 0) (LETT |degg| 0)
665                (LETT |g0| 0) (LETT |g| (|spadConstant| $ 59)) (LETT |rg| 0)
666                (LETT |nb| 0) (LETT |lg| NIL) (LETT |b| 1)
667                (LETT |dg| (SPADCALL (QREFELT $ 75))) (LETT |llg| (CONS NIL 0))
668                (LETT |levels| (LENGTH |lf|)) (LETT |level| 1)
669                (LETT |ic| (CONS 0 0)) (LETT |i| 0)
670                (SEQ G190 (COND ((NULL (< |level| |levels|)) (GO G191)))
671                     (SEQ (LETT |ic| (CONS 0 (|GALFACT;seed| |level| $)))
672                          (SEQ G190
673                               (COND
674                                ((NULL
675                                  (COND (|found?| NIL) ('T (QEQCAR |ic| 0))))
676                                 (GO G191)))
677                               (SEQ
678                                (LETT |i|
679                                      (PROG2 (LETT #16# |ic|)
680                                          (QCDR #16#)
681                                        (|check_union2| (QEQCAR #16# 0)
682                                                        (|Integer|)
683                                                        (|Union| (|Integer|)
684                                                                 "End of level")
685                                                        #16#)))
686                                (LETT |degg| 0) (LETT |g0| 1)
687                                (SEQ (LETT |j| 1) (LETT #15# |levels|) G190
688                                     (COND ((|greater_SI| |j| #15#) (GO G191)))
689                                     (SEQ
690                                      (EXIT
691                                       (COND
692                                        ((SPADCALL |i| (- |j| 1)
693                                                   (QREFELT $ 109))
694                                         (SEQ
695                                          (LETT |degg|
696                                                (+ |degg|
697                                                   (SPADCALL
698                                                    (SPADCALL |lf| |j|
699                                                              (QREFELT $ 110))
700                                                    (QREFELT $ 39))))
701                                          (EXIT
702                                           (LETT |g0|
703                                                 (* |g0|
704                                                    (SPADCALL
705                                                     (SPADCALL |lf| |j|
706                                                               (QREFELT $ 110))
707                                                     0 (QREFELT $ 108))))))))))
708                                     (LETT |j| (|inc_SI| |j|)) (GO G190) G191
709                                     (EXIT NIL))
710                                (LETT |g0|
711                                      (SPADCALL (* |lc| |g0|) |pk|
712                                                (QREFELT $ 111)))
713                                (COND
714                                 ((SPADCALL |degg| |d| (QREFELT $ 112))
715                                  (COND
716                                   ((QEQCAR
717                                     (SPADCALL (* |lc| |f0|) |g0|
718                                               (QREFELT $ 114))
719                                     0)
720                                    (SEQ
721                                     (LETT |g| (SPADCALL |lc| (QREFELT $ 62)))
722                                     (SEQ (LETT |j| 1) (LETT #14# |levels|)
723                                          G190
724                                          (COND
725                                           ((|greater_SI| |j| #14#) (GO G191)))
726                                          (SEQ
727                                           (EXIT
728                                            (COND
729                                             ((SPADCALL |i| (- |j| 1)
730                                                        (QREFELT $ 109))
731                                              (LETT |g|
732                                                    (SPADCALL |g|
733                                                              (SPADCALL |lf|
734                                                                        |j|
735                                                                        (QREFELT
736                                                                         $
737                                                                         110))
738                                                              (QREFELT $
739                                                                       115)))))))
740                                          (LETT |j| (|inc_SI| |j|)) (GO G190)
741                                          G191 (EXIT NIL))
742                                     (LETT |g|
743                                           (SPADCALL
744                                            (SPADCALL |g| |pk| (QREFELT $ 116))
745                                            (QREFELT $ 117)))
746                                     (LETT |f1|
747                                           (SPADCALL |f| |g| (QREFELT $ 118)))
748                                     (EXIT
749                                      (COND
750                                       ((QEQCAR |f1| 0)
751                                        (SEQ (LETT |found?| 'T) (LETT |nb| 1)
752                                             (SEQ (LETT |j| 1)
753                                                  (LETT #13# |levels|) G190
754                                                  (COND
755                                                   ((|greater_SI| |j| #13#)
756                                                    (GO G191)))
757                                                  (SEQ
758                                                   (EXIT
759                                                    (COND
760                                                     ((SPADCALL |i| (- |j| 1)
761                                                                (QREFELT $
762                                                                         109))
763                                                      (SEQ
764                                                       (SPADCALL |lf| |j| |nb|
765                                                                 (QREFELT $
766                                                                          119))
767                                                       (EXIT
768                                                        (LETT |nb|
769                                                              (+ |nb| 1))))))))
770                                                  (LETT |j| (|inc_SI| |j|))
771                                                  (GO G190) G191 (EXIT NIL))
772                                             (LETT |lg| |lf|)
773                                             (LETT |lf|
774                                                   (SPADCALL |lf|
775                                                             (PROG1
776                                                                 (LETT #12#
777                                                                       |level|)
778                                                               (|check_subtype2|
779                                                                (>= #12# 0)
780                                                                '(|NonNegativeInteger|)
781                                                                '(|Integer|)
782                                                                #12#))
783                                                             (QREFELT $ 120)))
784                                             (SPADCALL
785                                              (SPADCALL |lg|
786                                                        (PROG1
787                                                            (LETT #11#
788                                                                  (- |level|
789                                                                     1))
790                                                          (|check_subtype2|
791                                                           (>= #11# 0)
792                                                           '(|NonNegativeInteger|)
793                                                           '(|Integer|) #11#))
794                                                        (QREFELT $ 120))
795                                              NIL (QREFELT $ 121))
796                                             (LETT |f| (QCDR |f1|))
797                                             (LETT |lc|
798                                                   (SPADCALL |f|
799                                                             (QREFELT $ 28)))
800                                             (LETT |f0|
801                                                   (SPADCALL |f| 0
802                                                             (QREFELT $ 108)))
803                                             (LETT |dg|
804                                                   (SPADCALL
805                                                    (CONS
806                                                     #'|GALFACT;completeFactor!0|
807                                                     (VECTOR $ |degg|))
808                                                    |d| (QREFELT $ 95)))
809                                             (COND
810                                              ((SPADCALL |dg|
811                                                         (SPADCALL
812                                                          (LIST 0 |degg|)
813                                                          (QREFELT $ 49))
814                                                         (QREFELT $ 81))
815                                               (LETT |lg| (LIST |g|)))
816                                              ('T
817                                               (SEQ
818                                                (LETT |rg|
819                                                      (PROG1
820                                                          (LETT #10#
821                                                                (MAX 2
822                                                                     (-
823                                                                      (+ |r|
824                                                                         |level|)
825                                                                      |levels|)))
826                                                        (|check_subtype2|
827                                                         (>= #10# 0)
828                                                         '(|NonNegativeInteger|)
829                                                         '(|Integer|) #10#)))
830                                                (LETT |b|
831                                                      (PROG1
832                                                          (LETT #9#
833                                                                (*
834                                                                 (* 2
835                                                                    (SPADCALL
836                                                                     |g|
837                                                                     (QREFELT $
838                                                                              28)))
839                                                                 (SPADCALL |g|
840                                                                           |rg|
841                                                                           (QREFELT
842                                                                            $
843                                                                            122))))
844                                                        (|check_subtype2|
845                                                         (> #9# 0)
846                                                         '(|PositiveInteger|)
847                                                         '(|Integer|) #9#)))
848                                                (EXIT
849                                                 (COND
850                                                  ((> |b| |pk|)
851                                                   (COND
852                                                    ((SPADCALL |g|
853                                                               (QREFELT $ 97))
854                                                     (LETT |lg| (LIST |g|)))
855                                                    ((QREFELT $ 11)
856                                                     (COND
857                                                      ((SPADCALL |g|
858                                                                 (QREFELT $
859                                                                          37))
860                                                       (LETT |lg| (LIST |g|)))
861                                                      ('T
862                                                       (SEQ
863                                                        (LETT |llg|
864                                                              (SPADCALL |g|
865                                                                        |lg|
866                                                                        |cprime|
867                                                                        |b|
868                                                                        (QREFELT
869                                                                         $
870                                                                         124)))
871                                                        (LETT |gpk|
872                                                              (PROG1
873                                                                  (LETT #8#
874                                                                        (QCDR
875                                                                         |llg|))
876                                                                (|check_subtype2|
877                                                                 (> #8# 0)
878                                                                 '(|PositiveInteger|)
879                                                                 '(|Integer|)
880                                                                 #8#)))
881                                                        (EXIT
882                                                         (COND
883                                                          ((< |gpk| |b|)
884                                                           (LETT |lg|
885                                                                 (QCAR |llg|)))
886                                                          ('T
887                                                           (LETT |lg|
888                                                                 (|GALFACT;completeFactor|
889                                                                  |g|
890                                                                  (QCAR |llg|)
891                                                                  |cprime|
892                                                                  |gpk| |rg|
893                                                                  |dg|
894                                                                  $)))))))))
895                                                    ('T
896                                                     (SEQ
897                                                      (LETT |llg|
898                                                            (SPADCALL |g| |lg|
899                                                                      |cprime|
900                                                                      |b|
901                                                                      (QREFELT
902                                                                       $ 124)))
903                                                      (LETT |gpk|
904                                                            (PROG1
905                                                                (LETT #7#
906                                                                      (QCDR
907                                                                       |llg|))
908                                                              (|check_subtype2|
909                                                               (> #7# 0)
910                                                               '(|PositiveInteger|)
911                                                               '(|Integer|)
912                                                               #7#)))
913                                                      (EXIT
914                                                       (COND
915                                                        ((< |gpk| |b|)
916                                                         (LETT |lg|
917                                                               (QCAR |llg|)))
918                                                        ('T
919                                                         (LETT |lg|
920                                                               (|GALFACT;completeFactor|
921                                                                |g|
922                                                                (QCAR |llg|)
923                                                                |cprime| |gpk|
924                                                                |rg| |dg|
925                                                                $)))))))))
926                                                  ('T
927                                                   (LETT |lg| (LIST |g|))))))))
928                                             (LETT |ltrue|
929                                                   (SPADCALL |ltrue| |lg|
930                                                             (QREFELT $ 107)))
931                                             (LETT |r|
932                                                   (PROG1
933                                                       (LETT #6#
934                                                             (MAX 2
935                                                                  (- |r|
936                                                                     (LENGTH
937                                                                      |lg|))))
938                                                     (|check_subtype2|
939                                                      (>= #6# 0)
940                                                      '(|NonNegativeInteger|)
941                                                      '(|Integer|) #6#)))
942                                             (LETT |degf|
943                                                   (SPADCALL |f|
944                                                             (QREFELT $ 39)))
945                                             (LETT |d|
946                                                   (SPADCALL
947                                                    (CONS
948                                                     #'|GALFACT;completeFactor!1|
949                                                     (VECTOR $ |degf|))
950                                                    |d| (QREFELT $ 95)))
951                                             (EXIT
952                                              (COND
953                                               ((<= |degf| 1)
954                                                (SEQ
955                                                 (COND
956                                                  ((EQL |degf| 1)
957                                                   (LETT |ltrue|
958                                                         (CONS |f| |ltrue|))))
959                                                 (EXIT
960                                                  (PROGN
961                                                   (LETT #1# |ltrue|)
962                                                   (GO #17=#:G660)))))
963                                               ('T
964                                                (SEQ
965                                                 (LETT |b|
966                                                       (PROG1
967                                                           (LETT #3#
968                                                                 (* (* 2 |lc|)
969                                                                    (SPADCALL
970                                                                     |f| |r|
971                                                                     (QREFELT $
972                                                                              122))))
973                                                         (|check_subtype2|
974                                                          (> #3# 0)
975                                                          '(|PositiveInteger|)
976                                                          '(|Integer|) #3#)))
977                                                 (EXIT
978                                                  (COND
979                                                   ((> |b| |pk|)
980                                                    (SEQ
981                                                     (LETT |llg|
982                                                           (SPADCALL |f| |lf|
983                                                                     |cprime|
984                                                                     |b|
985                                                                     (QREFELT $
986                                                                              124)))
987                                                     (LETT |lf| (QCAR |llg|))
988                                                     (LETT |pk|
989                                                           (PROG1
990                                                               (LETT #2#
991                                                                     (QCDR
992                                                                      |llg|))
993                                                             (|check_subtype2|
994                                                              (> #2# 0)
995                                                              '(|PositiveInteger|)
996                                                              '(|Integer|)
997                                                              #2#)))
998                                                     (COND
999                                                      ((< |pk| |b|)
1000                                                       (PROGN
1001                                                        (LETT #1#
1002                                                              (SPADCALL |lf|
1003                                                                        |ltrue|
1004                                                                        (QREFELT
1005                                                                         $
1006                                                                         107)))
1007                                                        (GO #17#))))
1008                                                     (EXIT
1009                                                      (LETT |level|
1010                                                            1)))))))))))))))))))
1011                                (EXIT
1012                                 (LETT |ic|
1013                                       (|GALFACT;nextRecNum| |levels| |level|
1014                                        |i| $))))
1015                               NIL (GO G190) G191 (EXIT NIL))
1016                          (COND
1017                           (|found?|
1018                            (SEQ (LETT |levels| (LENGTH |lf|))
1019                                 (EXIT (LETT |found?| NIL)))))
1020                          (EXIT
1021                           (COND
1022                            ((NULL (QEQCAR |ic| 0))
1023                             (LETT |level| (+ |level| 1))))))
1024                     NIL (GO G190) G191 (EXIT NIL))
1025                (EXIT (CONS |f| |ltrue|))))
1026          #17# (EXIT #1#))))
1027
1028(SDEFUN |GALFACT;completeFactor!1| ((|x| NIL) ($$ NIL))
1029        (PROG (|degf| $)
1030          (LETT |degf| (QREFELT $$ 1))
1031          (LETT $ (QREFELT $$ 0))
1032          (RETURN (PROGN (SPADCALL |x| |degf| (QREFELT $ 90))))))
1033
1034(SDEFUN |GALFACT;completeFactor!0| ((|x| NIL) ($$ NIL))
1035        (PROG (|degg| $)
1036          (LETT |degg| (QREFELT $$ 1))
1037          (LETT $ (QREFELT $$ 0))
1038          (RETURN (PROGN (SPADCALL |x| |degg| (QREFELT $ 90))))))
1039
1040(SDEFUN |GALFACT;divideSet|
1041        ((|s| |Set| (|NonNegativeInteger|)) (|n| |NonNegativeInteger|)
1042         ($ |Set| (|NonNegativeInteger|)))
1043        (SPROG
1044         ((|l| (|List| (|NonNegativeInteger|)))
1045          (|ee| (|Union| (|NonNegativeInteger|) "failed")) (#1=#:G672 NIL)
1046          (|e| NIL))
1047         (SEQ (LETT |l| (LIST 0))
1048              (SEQ (LETT |e| NIL) (LETT #1# (SPADCALL |s| (QREFELT $ 125)))
1049                   G190
1050                   (COND
1051                    ((OR (ATOM #1#) (PROGN (LETT |e| (CAR #1#)) NIL))
1052                     (GO G191)))
1053                   (SEQ (LETT |ee| (SPADCALL |e| |n| (QREFELT $ 126)))
1054                        (EXIT
1055                         (COND
1056                          ((QEQCAR |ee| 0)
1057                           (LETT |l| (CONS (QCDR |ee|) |l|))))))
1058                   (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
1059              (EXIT (SPADCALL |l| (QREFELT $ 49))))))
1060
1061(SDEFUN |GALFACT;btwFactor|
1062        ((|f| UP) (|d| |Set| (|NonNegativeInteger|)) (|r| |NonNegativeInteger|)
1063         (|pdecomp| |Boolean|) ($ . #1=(|List| UP)))
1064        (SPROG
1065         ((#2=#:G726 NIL) (|i| NIL) (|lf| #3=(|List| UP)) (#4=#:G725 NIL)
1066          (|fact| NIL) (#5=#:G724 NIL) (#6=#:G712 NIL) (|lfg| #1#)
1067          (#7=#:G703 NIL) (|df| #8=(|NonNegativeInteger|)) (#9=#:G693 NIL)
1068          (|dgh| (|NonNegativeInteger|)) (|dg| #8#) (|g| (UP)) (#10=#:G723 NIL)
1069          (|lg| #1#) (|dh| #8#)
1070          (|lrf| (|Record| (|:| |left| UP) (|:| |right| UP)))
1071          (|pk| (|PositiveInteger|)) (#11=#:G688 NIL)
1072          (|lm| (|Record| (|:| |plist| #3#) (|:| |modulo| (|Integer|))))
1073          (|b| (|PositiveInteger|)) (#12=#:G686 NIL) (|lc| (|Integer|))
1074          (#13=#:G722 NIL) (|cprime| #14=(|Integer|))
1075          (|m| (|Record| (|:| |prime| #14#) (|:| |factors| (|List| UP))))
1076          (|cf| (|Union| (|Record| (|:| |left| UP) (|:| |right| UP)) "failed"))
1077          (|negativelc?| #15=(|Boolean|)) (|reverse?| #15#))
1078         (SEQ
1079          (EXIT
1080           (SEQ (LETT |df| (SPADCALL |f| (QREFELT $ 39)))
1081                (COND
1082                 ((NULL (EQL (SPADCALL |d| (QREFELT $ 127)) |df|))
1083                  (EXIT (|error| "btwFact: Bad arguments"))))
1084                (LETT |reverse?| NIL) (LETT |negativelc?| NIL)
1085                (EXIT
1086                 (COND
1087                  ((SPADCALL |d| (SPADCALL (LIST 0 |df|) (QREFELT $ 49))
1088                             (QREFELT $ 81))
1089                   (LIST |f|))
1090                  (#16='T
1091                   (SEQ
1092                    (COND
1093                     ((< (ABS (SPADCALL |f| 0 (QREFELT $ 108)))
1094                         (ABS (SPADCALL |f| (QREFELT $ 28))))
1095                      (SEQ (LETT |f| (SPADCALL |f| (QREFELT $ 129)))
1096                           (EXIT (LETT |reverse?| 'T)))))
1097                    (COND
1098                     ((SPADCALL |f| (QREFELT $ 97))
1099                      (EXIT
1100                       (COND (|reverse?| (LIST (SPADCALL |f| (QREFELT $ 129))))
1101                             (#16# (LIST |f|)))))
1102                     ((QREFELT $ 11)
1103                      (COND
1104                       ((SPADCALL |f| (QREFELT $ 37))
1105                        (EXIT
1106                         (COND
1107                          (|reverse?| (LIST (SPADCALL |f| (QREFELT $ 129))))
1108                          (#16# (LIST |f|))))))))
1109                    (COND
1110                     ((< (SPADCALL |f| (QREFELT $ 28)) 0)
1111                      (SEQ (LETT |f| (SPADCALL |f| (QREFELT $ 130)))
1112                           (EXIT (LETT |negativelc?| 'T)))))
1113                    (COND
1114                     (|pdecomp|
1115                      (COND
1116                       ((QREFELT $ 10)
1117                        (LETT |cf| (SPADCALL |f| (QREFELT $ 101))))
1118                       (#16# (LETT |cf| (CONS 1 #17="failed")))))
1119                     (#16# (LETT |cf| (CONS 1 #17#))))
1120                    (COND
1121                     ((QEQCAR |cf| 1)
1122                      (SEQ (LETT |m| (SPADCALL |f| |d| (QREFELT $ 84)))
1123                           (EXIT
1124                            (COND
1125                             ((ZEROP (LETT |cprime| (QCAR |m|)))
1126                              (COND
1127                               (|reverse?|
1128                                (COND
1129                                 (|negativelc?|
1130                                  (PROGN
1131                                   (LETT #13#
1132                                         (LIST
1133                                          (SPADCALL
1134                                           (SPADCALL |f| (QREFELT $ 129))
1135                                           (QREFELT $ 130))))
1136                                   (GO #18=#:G721)))
1137                                 (#16#
1138                                  (PROGN
1139                                   (LETT #13#
1140                                         (LIST (SPADCALL |f| (QREFELT $ 129))))
1141                                   (GO #18#)))))
1142                               (|negativelc?|
1143                                (PROGN
1144                                 (LETT #13#
1145                                       (LIST (SPADCALL |f| (QREFELT $ 130))))
1146                                 (GO #18#)))
1147                               (#16#
1148                                (PROGN (LETT #13# (LIST |f|)) (GO #18#)))))
1149                             (#16#
1150                              (SEQ
1151                               (COND
1152                                ((SPADCALL |f| (QREFELT $ 131))
1153                                 (LETT |d| (SPADCALL 1 |d| (QREFELT $ 132)))))
1154                               (LETT |lc| (SPADCALL |f| (QREFELT $ 28)))
1155                               (LETT |b|
1156                                     (PROG1
1157                                         (LETT #12#
1158                                               (* (* 2 |lc|)
1159                                                  (SPADCALL |f| |r|
1160                                                            (QREFELT $ 122))))
1161                                       (|check_subtype2| (> #12# 0)
1162                                                         '(|PositiveInteger|)
1163                                                         '(|Integer|) #12#)))
1164                               (LETT |lm|
1165                                     (SPADCALL |f| (QCDR |m|) |cprime| |b|
1166                                               (QREFELT $ 124)))
1167                               (LETT |lf| (QCAR |lm|))
1168                               (LETT |pk|
1169                                     (PROG1 (LETT #11# (QCDR |lm|))
1170                                       (|check_subtype2| (> #11# 0)
1171                                                         '(|PositiveInteger|)
1172                                                         '(|Integer|) #11#)))
1173                               (COND
1174                                ((SPADCALL (|SPADfirst| |lf|) (QREFELT $ 133))
1175                                 (LETT |lf| (CDR |lf|))))
1176                               (EXIT
1177                                (COND
1178                                 ((NULL (< |pk| |b|))
1179                                  (LETT |lf|
1180                                        (|GALFACT;completeFactor| |f| |lf|
1181                                         |cprime| |pk| |r| |d| $)))))))))))
1182                     (#16#
1183                      (SEQ (LETT |lrf| (QCDR |cf|))
1184                           (LETT |dh| (SPADCALL (QCDR |lrf|) (QREFELT $ 39)))
1185                           (LETT |lg|
1186                                 (|GALFACT;btwFactor| (QCAR |lrf|)
1187                                  (|GALFACT;divideSet| |d| |dh| $) 2 'T $))
1188                           (LETT |lf| NIL)
1189                           (EXIT
1190                            (SEQ (LETT |i| 1) (LETT #10# (LENGTH |lg|)) G190
1191                                 (COND ((|greater_SI| |i| #10#) (GO G191)))
1192                                 (SEQ
1193                                  (LETT |g|
1194                                        (SPADCALL |lg| |i| (QREFELT $ 110)))
1195                                  (LETT |dg| (SPADCALL |g| (QREFELT $ 39)))
1196                                  (LETT |dgh| (* |dg| |dh|))
1197                                  (LETT |df|
1198                                        (PROG2
1199                                            (LETT #9#
1200                                                  (SPADCALL |df| |dgh|
1201                                                            (QREFELT $ 134)))
1202                                            (QCDR #9#)
1203                                          (|check_union2| (QEQCAR #9# 0)
1204                                                          (|NonNegativeInteger|)
1205                                                          (|Union|
1206                                                           (|NonNegativeInteger|)
1207                                                           "failed")
1208                                                          #9#)))
1209                                  (LETT |lfg|
1210                                        (|GALFACT;btwFactor|
1211                                         (SPADCALL |g| (QCDR |lrf|)
1212                                                   (QREFELT $ 106))
1213                                         (|GALFACT;sel_set| |d| |dg| |dh| $)
1214                                         (PROG1 (LETT #7# (MAX 2 (- |r| |df|)))
1215                                           (|check_subtype2| (>= #7# 0)
1216                                                             '(|NonNegativeInteger|)
1217                                                             '(|Integer|) #7#))
1218                                         NIL $))
1219                                  (LETT |lf|
1220                                        (SPADCALL |lf| |lfg| (QREFELT $ 107)))
1221                                  (EXIT
1222                                   (LETT |r|
1223                                         (PROG1
1224                                             (LETT #6#
1225                                                   (MAX 2
1226                                                        (- |r|
1227                                                           (LENGTH |lfg|))))
1228                                           (|check_subtype2| (>= #6# 0)
1229                                                             '(|NonNegativeInteger|)
1230                                                             '(|Integer|)
1231                                                             #6#)))))
1232                                 (LETT |i| (|inc_SI| |i|)) (GO G190) G191
1233                                 (EXIT NIL))))))
1234                    (COND
1235                     (|reverse?|
1236                      (LETT |lf|
1237                            (PROGN
1238                             (LETT #5# NIL)
1239                             (SEQ (LETT |fact| NIL) (LETT #4# |lf|) G190
1240                                  (COND
1241                                   ((OR (ATOM #4#)
1242                                        (PROGN (LETT |fact| (CAR #4#)) NIL))
1243                                    (GO G191)))
1244                                  (SEQ
1245                                   (EXIT
1246                                    (LETT #5#
1247                                          (CONS
1248                                           (SPADCALL |fact| (QREFELT $ 129))
1249                                           #5#))))
1250                                  (LETT #4# (CDR #4#)) (GO G190) G191
1251                                  (EXIT (NREVERSE #5#)))))))
1252                    (SEQ (LETT |i| 1) (LETT #2# (LENGTH |lf|)) G190
1253                         (COND ((|greater_SI| |i| #2#) (GO G191)))
1254                         (SEQ
1255                          (EXIT
1256                           (COND
1257                            ((<
1258                              (SPADCALL (SPADCALL |lf| |i| (QREFELT $ 110))
1259                                        (QREFELT $ 28))
1260                              0)
1261                             (SPADCALL |lf| |i|
1262                                       (SPADCALL
1263                                        (SPADCALL |lf| |i| (QREFELT $ 110))
1264                                        (QREFELT $ 130))
1265                                       (QREFELT $ 135))))))
1266                         (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
1267                    (EXIT |lf|)))))))
1268          #18# (EXIT #13#))))
1269
1270(SDEFUN |GALFACT;makeFR;RF;30|
1271        ((|flist| |Record| (|:| |contp| (|Integer|))
1272          (|:| |factors|
1273               (|List|
1274                (|Record| (|:| |irr| UP) (|:| |pow| (|NonNegativeInteger|))))))
1275         ($ |Factored| UP))
1276        (SPROG
1277         ((|fflist|
1278           (|List|
1279            (|Record| (|:| |flag| (|Union| "nil" "sqfr" "irred" "prime"))
1280                      (|:| |factor| UP)
1281                      (|:| |exponent| (|NonNegativeInteger|)))))
1282          (#1=#:G743 NIL) (|fc| NIL) (#2=#:G742 NIL) (|ff| NIL)
1283          (|ctp| (|Factored| (|Integer|))))
1284         (SEQ (LETT |ctp| (SPADCALL (QCAR |flist|) (QREFELT $ 31)))
1285              (LETT |fflist| NIL)
1286              (SEQ (LETT |ff| NIL) (LETT #2# (QCDR |flist|)) G190
1287                   (COND
1288                    ((OR (ATOM #2#) (PROGN (LETT |ff| (CAR #2#)) NIL))
1289                     (GO G191)))
1290                   (SEQ
1291                    (EXIT
1292                     (LETT |fflist|
1293                           (CONS
1294                            (VECTOR (CONS 3 "prime") (QCAR |ff|) (QCDR |ff|))
1295                            |fflist|))))
1296                   (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
1297              (SEQ (LETT |fc| NIL) (LETT #1# (SPADCALL |ctp| (QREFELT $ 36)))
1298                   G190
1299                   (COND
1300                    ((OR (ATOM #1#) (PROGN (LETT |fc| (CAR #1#)) NIL))
1301                     (GO G191)))
1302                   (SEQ
1303                    (EXIT
1304                     (LETT |fflist|
1305                           (CONS
1306                            (VECTOR (QVELT |fc| 0)
1307                                    (SPADCALL (QVELT |fc| 1) (QREFELT $ 62))
1308                                    (QVELT |fc| 2))
1309                            |fflist|))))
1310                   (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
1311              (EXIT
1312               (SPADCALL
1313                (SPADCALL (SPADCALL |ctp| (QREFELT $ 136)) (QREFELT $ 62))
1314                |fflist| (QREFELT $ 140))))))
1315
1316(SDEFUN |GALFACT;quadratic| ((|p| UP) ($ |List| UP))
1317        (SPROG
1318         ((#1=#:G749 NIL) (|f| (UP)) (|b| (|Integer|)) (|a| (|Integer|))
1319          (|d| (|Integer|)) (|r| (|Union| (|Integer|) "failed")))
1320         (SEQ (LETT |a| (SPADCALL |p| (QREFELT $ 28)))
1321              (LETT |b| (SPADCALL |p| 1 (QREFELT $ 108)))
1322              (LETT |d|
1323                    (- (EXPT |b| 2)
1324                       (* (* 4 |a|) (SPADCALL |p| 0 (QREFELT $ 108)))))
1325              (LETT |r| (SPADCALL |d| (QREFELT $ 146)))
1326              (EXIT
1327               (COND ((QEQCAR |r| 1) (LIST |p|))
1328                     ('T
1329                      (SEQ (LETT |b| (+ |b| (QCDR |r|))) (LETT |a| (* 2 |a|))
1330                           (LETT |d| (GCD |a| |b|))
1331                           (COND
1332                            ((NULL (EQL |d| 1))
1333                             (SEQ (LETT |a| (QUOTIENT2 |a| |d|))
1334                                  (EXIT (LETT |b| (QUOTIENT2 |b| |d|))))))
1335                           (LETT |f|
1336                                 (SPADCALL (SPADCALL |a| 1 (QREFELT $ 147))
1337                                           (SPADCALL |b| 0 (QREFELT $ 147))
1338                                           (QREFELT $ 148)))
1339                           (EXIT
1340                            (CONS |f|
1341                                  (LIST
1342                                   (PROG2
1343                                       (LETT #1#
1344                                             (SPADCALL |p| |f|
1345                                                       (QREFELT $ 118)))
1346                                       (QCDR #1#)
1347                                     (|check_union2| (QEQCAR #1# 0)
1348                                                     (QREFELT $ 6)
1349                                                     (|Union| (QREFELT $ 6)
1350                                                              "failed")
1351                                                     #1#))))))))))))
1352
1353(SDEFUN |GALFACT;isPowerOf2| ((|n| |Integer|) ($ |Boolean|))
1354        (SPROG
1355         ((|qr|
1356           (|Record| (|:| |quotient| (|Integer|))
1357                     (|:| |remainder| (|Integer|)))))
1358         (SEQ
1359          (COND ((EQL |n| 1) 'T)
1360                (#1='T
1361                 (SEQ (LETT |qr| (DIVIDE2 |n| 2))
1362                      (EXIT
1363                       (COND ((EQL (QCDR |qr|) 1) NIL)
1364                             (#1# (|GALFACT;isPowerOf2| (QCAR |qr|) $))))))))))
1365
1366(SDEFUN |GALFACT;subMinusX|
1367        ((|supPol| |SparseUnivariatePolynomial| (|Integer|)) ($ UP))
1368        (SPROG ((|minusX| (|SparseUnivariatePolynomial| (|Integer|))))
1369               (SEQ (LETT |minusX| (SPADCALL -1 1 (QREFELT $ 149)))
1370                    (EXIT
1371                     (SPADCALL (SPADCALL |supPol| |minusX| (QREFELT $ 150))
1372                               (QREFELT $ 61))))))
1373
1374(SDEFUN |GALFACT;henselFact;UPBR;34|
1375        ((|f| UP) (|sqf| |Boolean|)
1376         ($ |Record| (|:| |contp| (|Integer|))
1377          (|:| |factors|
1378               (|List|
1379                (|Record| (|:| |irr| UP)
1380                          (|:| |pow| (|NonNegativeInteger|)))))))
1381        (SPROG
1382         ((|factorlist|
1383           (|List|
1384            (|Record| (|:| |irr| UP) (|:| |pow| (|NonNegativeInteger|)))))
1385          (#1=#:G800 NIL) (|pf| NIL) (#2=#:G799 NIL) (#3=#:G798 NIL)
1386          (#4=#:G797 NIL) (|d| (|NonNegativeInteger|)) (|sqff| (UP))
1387          (|mult| #5=(|NonNegativeInteger|)) (#6=#:G796 NIL) (|sqfr| NIL)
1388          (|sqfflist|
1389           (|List|
1390            (|Record| (|:| |flag| (|Union| "nil" "sqfr" "irred" "prime"))
1391                      (|:| |factor| UP) (|:| |exponent| #5#))))
1392          (#7=#:G795 NIL) (#8=#:G794 NIL) (|fac| (UP)) (#9=#:G793 NIL)
1393          (|sfac| NIL) (#10=#:G792 NIL) (|lcPol| (UP)) (|c| (|Integer|))
1394          (#11=#:G762 NIL))
1395         (SEQ (LETT |factorlist| NIL) (LETT |c| (SPADCALL |f| (QREFELT $ 26)))
1396              (LETT |f|
1397                    (PROG2 (LETT #11# (SPADCALL |f| |c| (QREFELT $ 151)))
1398                        (QCDR #11#)
1399                      (|check_union2| (QEQCAR #11# 0) (QREFELT $ 6)
1400                                      (|Union| (QREFELT $ 6) "failed") #11#)))
1401              (COND
1402               ((< (SPADCALL |f| (QREFELT $ 28)) 0)
1403                (SEQ (LETT |c| (- |c|))
1404                     (EXIT (LETT |f| (SPADCALL |f| (QREFELT $ 130)))))))
1405              (SEQ (LETT |d| (SPADCALL |f| (QREFELT $ 152)))
1406                   (EXIT
1407                    (COND
1408                     ((> |d| 0)
1409                      (SEQ
1410                       (LETT |f|
1411                             (QCAR
1412                              (SPADCALL |f| (SPADCALL 1 |d| (QREFELT $ 147))
1413                                        (QREFELT $ 154))))
1414                       (EXIT
1415                        (LETT |factorlist|
1416                              (LIST
1417                               (CONS (SPADCALL 1 1 (QREFELT $ 147))
1418                                     |d|)))))))))
1419              (LETT |d| (SPADCALL |f| (QREFELT $ 39)))
1420              (EXIT
1421               (COND ((ZEROP |d|) (CONS |c| |factorlist|))
1422                     ((EQL |d| 1) (CONS |c| (CONS (CONS |f| 1) |factorlist|)))
1423                     (#12='T
1424                      (SEQ
1425                       (LETT |lcPol|
1426                             (SPADCALL (SPADCALL |f| (QREFELT $ 28))
1427                                       (QREFELT $ 62)))
1428                       (EXIT
1429                        (COND
1430                         ((SPADCALL (SPADCALL |lcPol| (QREFELT $ 130))
1431                                    (SPADCALL |f| (QREFELT $ 24))
1432                                    (QREFELT $ 155))
1433                          (SEQ
1434                           (SEQ (LETT |fac| NIL)
1435                                (LETT #10#
1436                                      (SPADCALL (ELT $ 61)
1437                                                (SPADCALL |d| (QREFELT $ 158))
1438                                                (QREFELT $ 161)))
1439                                G190
1440                                (COND
1441                                 ((OR (ATOM #10#)
1442                                      (PROGN (LETT |fac| (CAR #10#)) NIL))
1443                                  (GO G191)))
1444                                (SEQ
1445                                 (EXIT
1446                                  (LETT |factorlist|
1447                                        (CONS (CONS |fac| 1) |factorlist|))))
1448                                (LETT #10# (CDR #10#)) (GO G190) G191
1449                                (EXIT NIL))
1450                           (EXIT (CONS |c| |factorlist|))))
1451                         (#12#
1452                          (SEQ
1453                           (COND
1454                            ((ODDP |d|)
1455                             (COND
1456                              ((SPADCALL |lcPol| (SPADCALL |f| (QREFELT $ 24))
1457                                         (QREFELT $ 155))
1458                               (EXIT
1459                                (SEQ
1460                                 (SEQ (LETT |sfac| NIL)
1461                                      (LETT #9# (SPADCALL |d| (QREFELT $ 158)))
1462                                      G190
1463                                      (COND
1464                                       ((OR (ATOM #9#)
1465                                            (PROGN
1466                                             (LETT |sfac| (CAR #9#))
1467                                             NIL))
1468                                        (GO G191)))
1469                                      (SEQ
1470                                       (LETT |fac|
1471                                             (|GALFACT;subMinusX| |sfac| $))
1472                                       (COND
1473                                        ((< (SPADCALL |fac| (QREFELT $ 28)) 0)
1474                                         (LETT |fac|
1475                                               (SPADCALL |fac|
1476                                                         (QREFELT $ 130)))))
1477                                       (EXIT
1478                                        (LETT |factorlist|
1479                                              (CONS (CONS |fac| 1)
1480                                                    |factorlist|))))
1481                                      (LETT #9# (CDR #9#)) (GO G190) G191
1482                                      (EXIT NIL))
1483                                 (EXIT (CONS |c| |factorlist|))))))))
1484                           (COND
1485                            ((|GALFACT;isPowerOf2| |d| $)
1486                             (COND
1487                              ((SPADCALL |lcPol| (SPADCALL |f| (QREFELT $ 24))
1488                                         (QREFELT $ 155))
1489                               (EXIT
1490                                (SEQ
1491                                 (LETT |factorlist|
1492                                       (CONS (CONS |f| 1) |factorlist|))
1493                                 (EXIT (CONS |c| |factorlist|))))))))
1494                           (EXIT
1495                            (COND
1496                             (|sqf|
1497                              (CONS |c|
1498                                    (SPADCALL
1499                                     (PROGN
1500                                      (LETT #8# NIL)
1501                                      (SEQ (LETT |pf| NIL)
1502                                           (LETT #7#
1503                                                 (|GALFACT;henselfact1| |f| 'T
1504                                                  $))
1505                                           G190
1506                                           (COND
1507                                            ((OR (ATOM #7#)
1508                                                 (PROGN
1509                                                  (LETT |pf| (CAR #7#))
1510                                                  NIL))
1511                                             (GO G191)))
1512                                           (SEQ
1513                                            (EXIT
1514                                             (LETT #8#
1515                                                   (CONS (CONS |pf| 1) #8#))))
1516                                           (LETT #7# (CDR #7#)) (GO G190) G191
1517                                           (EXIT (NREVERSE #8#))))
1518                                     |factorlist| (QREFELT $ 163))))
1519                             (#12#
1520                              (SEQ
1521                               (LETT |sqfflist|
1522                                     (SPADCALL (SPADCALL |f| (QREFELT $ 164))
1523                                               (QREFELT $ 165)))
1524                               (SEQ (LETT |sqfr| NIL) (LETT #6# |sqfflist|)
1525                                    G190
1526                                    (COND
1527                                     ((OR (ATOM #6#)
1528                                          (PROGN (LETT |sqfr| (CAR #6#)) NIL))
1529                                      (GO G191)))
1530                                    (SEQ (LETT |mult| (QVELT |sqfr| 2))
1531                                         (LETT |sqff| (QVELT |sqfr| 1))
1532                                         (LETT |d|
1533                                               (SPADCALL |sqff|
1534                                                         (QREFELT $ 39)))
1535                                         (EXIT
1536                                          (COND
1537                                           ((EQL |d| 1)
1538                                            (LETT |factorlist|
1539                                                  (CONS (CONS |sqff| |mult|)
1540                                                        |factorlist|)))
1541                                           ((EQL |d| 2)
1542                                            (LETT |factorlist|
1543                                                  (SPADCALL
1544                                                   (PROGN
1545                                                    (LETT #4# NIL)
1546                                                    (SEQ (LETT |pf| NIL)
1547                                                         (LETT #3#
1548                                                               (|GALFACT;quadratic|
1549                                                                |sqff| $))
1550                                                         G190
1551                                                         (COND
1552                                                          ((OR (ATOM #3#)
1553                                                               (PROGN
1554                                                                (LETT |pf|
1555                                                                      (CAR
1556                                                                       #3#))
1557                                                                NIL))
1558                                                           (GO G191)))
1559                                                         (SEQ
1560                                                          (EXIT
1561                                                           (LETT #4#
1562                                                                 (CONS
1563                                                                  (CONS |pf|
1564                                                                        |mult|)
1565                                                                  #4#))))
1566                                                         (LETT #3# (CDR #3#))
1567                                                         (GO G190) G191
1568                                                         (EXIT
1569                                                          (NREVERSE #4#))))
1570                                                   |factorlist|
1571                                                   (QREFELT $ 163))))
1572                                           ('T
1573                                            (LETT |factorlist|
1574                                                  (SPADCALL
1575                                                   (PROGN
1576                                                    (LETT #2# NIL)
1577                                                    (SEQ (LETT |pf| NIL)
1578                                                         (LETT #1#
1579                                                               (|GALFACT;henselfact1|
1580                                                                |sqff| 'T $))
1581                                                         G190
1582                                                         (COND
1583                                                          ((OR (ATOM #1#)
1584                                                               (PROGN
1585                                                                (LETT |pf|
1586                                                                      (CAR
1587                                                                       #1#))
1588                                                                NIL))
1589                                                           (GO G191)))
1590                                                         (SEQ
1591                                                          (EXIT
1592                                                           (LETT #2#
1593                                                                 (CONS
1594                                                                  (CONS |pf|
1595                                                                        |mult|)
1596                                                                  #2#))))
1597                                                         (LETT #1# (CDR #1#))
1598                                                         (GO G190) G191
1599                                                         (EXIT
1600                                                          (NREVERSE #2#))))
1601                                                   |factorlist|
1602                                                   (QREFELT $ 163)))))))
1603                                    (LETT #6# (CDR #6#)) (GO G190) G191
1604                                    (EXIT NIL))
1605                               (EXIT (CONS |c| |factorlist|)))))))))))))))))
1606
1607(SDEFUN |GALFACT;btwFact;UPBSNniR;35|
1608        ((|f| UP) (|sqf| |Boolean|) (|fd| |Set| (|NonNegativeInteger|))
1609         (|r| |NonNegativeInteger|)
1610         ($ |Record| (|:| |contp| (|Integer|))
1611          (|:| |factors|
1612               (|List|
1613                (|Record| (|:| |irr| UP)
1614                          (|:| |pow| (|NonNegativeInteger|)))))))
1615        (SPROG
1616         ((|maxd| (|NonNegativeInteger|)) (#1=#:G849 NIL)
1617          (|factorlist|
1618           (|List|
1619            (|Record| (|:| |irr| UP) (|:| |pow| (|NonNegativeInteger|)))))
1620          (#2=#:G867 NIL) (|pf| NIL) (#3=#:G866 NIL) (#4=#:G844 NIL)
1621          (#5=#:G865 NIL) (#6=#:G864 NIL) (#7=#:G840 NIL)
1622          (|d| (|NonNegativeInteger|)) (|sqff| (UP))
1623          (|mult| #8=(|NonNegativeInteger|)) (#9=#:G863 NIL) (|sqfr| NIL)
1624          (|sqfflist|
1625           (|List|
1626            (|Record| (|:| |flag| (|Union| "nil" "sqfr" "irred" "prime"))
1627                      (|:| |factor| UP) (|:| |exponent| #8#))))
1628          (#10=#:G862 NIL) (#11=#:G861 NIL) (|fac| (UP)) (#12=#:G860 NIL)
1629          (|sfac| NIL) (#13=#:G859 NIL) (|lcPol| (UP)) (#14=#:G820 NIL)
1630          (#15=#:G818 NIL) (|c| (|Integer|)) (#16=#:G805 NIL))
1631         (SEQ (LETT |d| (SPADCALL |f| (QREFELT $ 39)))
1632              (COND
1633               ((NULL (EQL (SPADCALL |fd| (QREFELT $ 127)) |d|))
1634                (EXIT (|error| "btwFact: Bad arguments"))))
1635              (LETT |factorlist| NIL) (LETT |c| (SPADCALL |f| (QREFELT $ 26)))
1636              (LETT |f|
1637                    (PROG2 (LETT #16# (SPADCALL |f| |c| (QREFELT $ 151)))
1638                        (QCDR #16#)
1639                      (|check_union2| (QEQCAR #16# 0) (QREFELT $ 6)
1640                                      (|Union| (QREFELT $ 6) "failed") #16#)))
1641              (COND
1642               ((< (SPADCALL |f| (QREFELT $ 28)) 0)
1643                (SEQ (LETT |c| (- |c|))
1644                     (EXIT (LETT |f| (SPADCALL |f| (QREFELT $ 130)))))))
1645              (SEQ (LETT |maxd| (SPADCALL |f| (QREFELT $ 152)))
1646                   (EXIT
1647                    (COND
1648                     ((> |maxd| 0)
1649                      (SEQ
1650                       (LETT |f|
1651                             (QCAR
1652                              (SPADCALL |f| (SPADCALL 1 |maxd| (QREFELT $ 147))
1653                                        (QREFELT $ 154))))
1654                       (LETT |factorlist|
1655                             (LIST
1656                              (CONS (SPADCALL 1 1 (QREFELT $ 147)) |maxd|)))
1657                       (LETT |r|
1658                             (PROG1 (LETT #15# (MAX 2 (- |r| |maxd|)))
1659                               (|check_subtype2| (>= #15# 0)
1660                                                 '(|NonNegativeInteger|)
1661                                                 '(|Integer|) #15#)))
1662                       (LETT |d|
1663                             (PROG2
1664                                 (LETT #14#
1665                                       (SPADCALL |d| |maxd| (QREFELT $ 134)))
1666                                 (QCDR #14#)
1667                               (|check_union2| (QEQCAR #14# 0)
1668                                               (|NonNegativeInteger|)
1669                                               (|Union| (|NonNegativeInteger|)
1670                                                        "failed")
1671                                               #14#)))
1672                       (EXIT
1673                        (LETT |fd|
1674                              (SPADCALL
1675                               (CONS #'|GALFACT;btwFact;UPBSNniR;35!0|
1676                                     (VECTOR $ |d|))
1677                               |fd| (QREFELT $ 95)))))))))
1678              (EXIT
1679               (COND ((ZEROP |d|) (CONS |c| |factorlist|))
1680                     ((EQL |d| 1) (CONS |c| (CONS (CONS |f| 1) |factorlist|)))
1681                     (#17='T
1682                      (SEQ
1683                       (LETT |lcPol|
1684                             (SPADCALL (SPADCALL |f| (QREFELT $ 28))
1685                                       (QREFELT $ 62)))
1686                       (EXIT
1687                        (COND
1688                         ((SPADCALL (SPADCALL |lcPol| (QREFELT $ 130))
1689                                    (SPADCALL |f| (QREFELT $ 24))
1690                                    (QREFELT $ 155))
1691                          (SEQ
1692                           (SEQ (LETT |fac| NIL)
1693                                (LETT #13#
1694                                      (SPADCALL (ELT $ 61)
1695                                                (SPADCALL |d| (QREFELT $ 158))
1696                                                (QREFELT $ 161)))
1697                                G190
1698                                (COND
1699                                 ((OR (ATOM #13#)
1700                                      (PROGN (LETT |fac| (CAR #13#)) NIL))
1701                                  (GO G191)))
1702                                (SEQ
1703                                 (EXIT
1704                                  (LETT |factorlist|
1705                                        (CONS (CONS |fac| 1) |factorlist|))))
1706                                (LETT #13# (CDR #13#)) (GO G190) G191
1707                                (EXIT NIL))
1708                           (EXIT (CONS |c| |factorlist|))))
1709                         (#17#
1710                          (SEQ
1711                           (COND
1712                            ((ODDP |d|)
1713                             (COND
1714                              ((SPADCALL |lcPol| (SPADCALL |f| (QREFELT $ 24))
1715                                         (QREFELT $ 155))
1716                               (EXIT
1717                                (SEQ
1718                                 (SEQ (LETT |sfac| NIL)
1719                                      (LETT #12#
1720                                            (SPADCALL |d| (QREFELT $ 158)))
1721                                      G190
1722                                      (COND
1723                                       ((OR (ATOM #12#)
1724                                            (PROGN
1725                                             (LETT |sfac| (CAR #12#))
1726                                             NIL))
1727                                        (GO G191)))
1728                                      (SEQ
1729                                       (LETT |fac|
1730                                             (|GALFACT;subMinusX| |sfac| $))
1731                                       (COND
1732                                        ((< (SPADCALL |fac| (QREFELT $ 28)) 0)
1733                                         (LETT |fac|
1734                                               (SPADCALL |fac|
1735                                                         (QREFELT $ 130)))))
1736                                       (EXIT
1737                                        (LETT |factorlist|
1738                                              (CONS (CONS |fac| 1)
1739                                                    |factorlist|))))
1740                                      (LETT #12# (CDR #12#)) (GO G190) G191
1741                                      (EXIT NIL))
1742                                 (EXIT (CONS |c| |factorlist|))))))))
1743                           (COND
1744                            ((|GALFACT;isPowerOf2| |d| $)
1745                             (COND
1746                              ((SPADCALL |lcPol| (SPADCALL |f| (QREFELT $ 24))
1747                                         (QREFELT $ 155))
1748                               (EXIT
1749                                (SEQ
1750                                 (LETT |factorlist|
1751                                       (CONS (CONS |f| 1) |factorlist|))
1752                                 (EXIT (CONS |c| |factorlist|))))))))
1753                           (EXIT
1754                            (COND
1755                             (|sqf|
1756                              (CONS |c|
1757                                    (SPADCALL
1758                                     (PROGN
1759                                      (LETT #11# NIL)
1760                                      (SEQ (LETT |pf| NIL)
1761                                           (LETT #10#
1762                                                 (|GALFACT;btwFactor| |f| |fd|
1763                                                  |r| 'T $))
1764                                           G190
1765                                           (COND
1766                                            ((OR (ATOM #10#)
1767                                                 (PROGN
1768                                                  (LETT |pf| (CAR #10#))
1769                                                  NIL))
1770                                             (GO G191)))
1771                                           (SEQ
1772                                            (EXIT
1773                                             (LETT #11#
1774                                                   (CONS (CONS |pf| 1) #11#))))
1775                                           (LETT #10# (CDR #10#)) (GO G190)
1776                                           G191 (EXIT (NREVERSE #11#))))
1777                                     |factorlist| (QREFELT $ 163))))
1778                             (#17#
1779                              (SEQ
1780                               (LETT |sqfflist|
1781                                     (SPADCALL (SPADCALL |f| (QREFELT $ 164))
1782                                               (QREFELT $ 165)))
1783                               (COND
1784                                ((EQL (LENGTH |sqfflist|) 1)
1785                                 (LETT |r|
1786                                       (MAX
1787                                        (QUOTIENT2 |r|
1788                                                   (QVELT
1789                                                    (|SPADfirst| |sqfflist|)
1790                                                    2))
1791                                        2)))
1792                                (#17# (LETT |r| 2)))
1793                               (SEQ (LETT |sqfr| NIL) (LETT #9# |sqfflist|)
1794                                    G190
1795                                    (COND
1796                                     ((OR (ATOM #9#)
1797                                          (PROGN (LETT |sqfr| (CAR #9#)) NIL))
1798                                      (GO G191)))
1799                                    (SEQ (LETT |mult| (QVELT |sqfr| 2))
1800                                         (LETT |sqff| (QVELT |sqfr| 1))
1801                                         (LETT |d|
1802                                               (SPADCALL |sqff|
1803                                                         (QREFELT $ 39)))
1804                                         (EXIT
1805                                          (COND
1806                                           ((EQL |d| 1)
1807                                            (SEQ
1808                                             (LETT |factorlist|
1809                                                   (CONS (CONS |sqff| |mult|)
1810                                                         |factorlist|))
1811                                             (LETT |maxd|
1812                                                   (PROG1
1813                                                       (LETT #7#
1814                                                             (-
1815                                                              (SPADCALL |fd|
1816                                                                        (QREFELT
1817                                                                         $
1818                                                                         127))
1819                                                              |mult|))
1820                                                     (|check_subtype2|
1821                                                      (>= #7# 0)
1822                                                      '(|NonNegativeInteger|)
1823                                                      '(|Integer|) #7#)))
1824                                             (EXIT
1825                                              (LETT |fd|
1826                                                    (SPADCALL
1827                                                     (CONS
1828                                                      #'|GALFACT;btwFact;UPBSNniR;35!1|
1829                                                      (VECTOR $ |maxd|))
1830                                                     |fd| (QREFELT $ 95))))))
1831                                           ((EQL |d| 2)
1832                                            (SEQ
1833                                             (LETT |factorlist|
1834                                                   (SPADCALL
1835                                                    (PROGN
1836                                                     (LETT #6# NIL)
1837                                                     (SEQ (LETT |pf| NIL)
1838                                                          (LETT #5#
1839                                                                (|GALFACT;quadratic|
1840                                                                 |sqff| $))
1841                                                          G190
1842                                                          (COND
1843                                                           ((OR (ATOM #5#)
1844                                                                (PROGN
1845                                                                 (LETT |pf|
1846                                                                       (CAR
1847                                                                        #5#))
1848                                                                 NIL))
1849                                                            (GO G191)))
1850                                                          (SEQ
1851                                                           (EXIT
1852                                                            (LETT #6#
1853                                                                  (CONS
1854                                                                   (CONS |pf|
1855                                                                         |mult|)
1856                                                                   #6#))))
1857                                                          (LETT #5# (CDR #5#))
1858                                                          (GO G190) G191
1859                                                          (EXIT
1860                                                           (NREVERSE #6#))))
1861                                                    |factorlist|
1862                                                    (QREFELT $ 163)))
1863                                             (LETT |maxd|
1864                                                   (PROG1
1865                                                       (LETT #4#
1866                                                             (-
1867                                                              (SPADCALL |fd|
1868                                                                        (QREFELT
1869                                                                         $
1870                                                                         127))
1871                                                              (* 2 |mult|)))
1872                                                     (|check_subtype2|
1873                                                      (>= #4# 0)
1874                                                      '(|NonNegativeInteger|)
1875                                                      '(|Integer|) #4#)))
1876                                             (EXIT
1877                                              (LETT |fd|
1878                                                    (SPADCALL
1879                                                     (CONS
1880                                                      #'|GALFACT;btwFact;UPBSNniR;35!2|
1881                                                      (VECTOR $ |maxd|))
1882                                                     |fd| (QREFELT $ 95))))))
1883                                           ('T
1884                                            (SEQ
1885                                             (LETT |factorlist|
1886                                                   (SPADCALL
1887                                                    (PROGN
1888                                                     (LETT #3# NIL)
1889                                                     (SEQ (LETT |pf| NIL)
1890                                                          (LETT #2#
1891                                                                (|GALFACT;btwFactor|
1892                                                                 |sqff|
1893                                                                 (SPADCALL
1894                                                                  (CONS
1895                                                                   #'|GALFACT;btwFact;UPBSNniR;35!3|
1896                                                                   (VECTOR $
1897                                                                           |d|))
1898                                                                  |fd|
1899                                                                  (QREFELT $
1900                                                                           95))
1901                                                                 |r| 'T $))
1902                                                          G190
1903                                                          (COND
1904                                                           ((OR (ATOM #2#)
1905                                                                (PROGN
1906                                                                 (LETT |pf|
1907                                                                       (CAR
1908                                                                        #2#))
1909                                                                 NIL))
1910                                                            (GO G191)))
1911                                                          (SEQ
1912                                                           (EXIT
1913                                                            (LETT #3#
1914                                                                  (CONS
1915                                                                   (CONS |pf|
1916                                                                         |mult|)
1917                                                                   #3#))))
1918                                                          (LETT #2# (CDR #2#))
1919                                                          (GO G190) G191
1920                                                          (EXIT
1921                                                           (NREVERSE #3#))))
1922                                                    |factorlist|
1923                                                    (QREFELT $ 163)))
1924                                             (LETT |maxd|
1925                                                   (PROG1
1926                                                       (LETT #1#
1927                                                             (-
1928                                                              (SPADCALL |fd|
1929                                                                        (QREFELT
1930                                                                         $
1931                                                                         127))
1932                                                              (* |d| |mult|)))
1933                                                     (|check_subtype2|
1934                                                      (>= #1# 0)
1935                                                      '(|NonNegativeInteger|)
1936                                                      '(|Integer|) #1#)))
1937                                             (EXIT
1938                                              (LETT |fd|
1939                                                    (SPADCALL
1940                                                     (CONS
1941                                                      #'|GALFACT;btwFact;UPBSNniR;35!4|
1942                                                      (VECTOR $ |maxd|))
1943                                                     |fd|
1944                                                     (QREFELT $ 95)))))))))
1945                                    (LETT #9# (CDR #9#)) (GO G190) G191
1946                                    (EXIT NIL))
1947                               (EXIT (CONS |c| |factorlist|)))))))))))))))))
1948
1949(SDEFUN |GALFACT;btwFact;UPBSNniR;35!4| ((|x| NIL) ($$ NIL))
1950        (PROG (|maxd| $)
1951          (LETT |maxd| (QREFELT $$ 1))
1952          (LETT $ (QREFELT $$ 0))
1953          (RETURN (PROGN (SPADCALL |x| |maxd| (QREFELT $ 90))))))
1954
1955(SDEFUN |GALFACT;btwFact;UPBSNniR;35!3| ((|x| NIL) ($$ NIL))
1956        (PROG (|d| $)
1957          (LETT |d| (QREFELT $$ 1))
1958          (LETT $ (QREFELT $$ 0))
1959          (RETURN (PROGN (SPADCALL |x| |d| (QREFELT $ 90))))))
1960
1961(SDEFUN |GALFACT;btwFact;UPBSNniR;35!2| ((|x| NIL) ($$ NIL))
1962        (PROG (|maxd| $)
1963          (LETT |maxd| (QREFELT $$ 1))
1964          (LETT $ (QREFELT $$ 0))
1965          (RETURN (PROGN (SPADCALL |x| |maxd| (QREFELT $ 90))))))
1966
1967(SDEFUN |GALFACT;btwFact;UPBSNniR;35!1| ((|x| NIL) ($$ NIL))
1968        (PROG (|maxd| $)
1969          (LETT |maxd| (QREFELT $$ 1))
1970          (LETT $ (QREFELT $$ 0))
1971          (RETURN (PROGN (SPADCALL |x| |maxd| (QREFELT $ 90))))))
1972
1973(SDEFUN |GALFACT;btwFact;UPBSNniR;35!0| ((|x| NIL) ($$ NIL))
1974        (PROG (|d| $)
1975          (LETT |d| (QREFELT $$ 1))
1976          (LETT $ (QREFELT $$ 0))
1977          (RETURN (PROGN (SPADCALL |x| |d| (QREFELT $ 90))))))
1978
1979(SDEFUN |GALFACT;factor;UPF;36| ((|f| UP) ($ |Factored| UP))
1980        (SPADCALL
1981         (COND
1982          ((QREFELT $ 9)
1983           (SPADCALL |f| NIL
1984                     (|GALFACT;fullSet| (SPADCALL |f| (QREFELT $ 39)) $) 2
1985                     (QREFELT $ 167)))
1986          ('T (SPADCALL |f| NIL (QREFELT $ 166))))
1987         (QREFELT $ 143)))
1988
1989(SDEFUN |GALFACT;errorsum?|
1990        ((|d| |NonNegativeInteger|) (|ld| |List| #1=(|NonNegativeInteger|))
1991         ($ |Boolean|))
1992        (SPROG
1993         ((#2=#:G871 NIL) (#3=#:G870 #1#) (#4=#:G872 #1#) (#5=#:G875 NIL)
1994          (#6=#:G400 NIL))
1995         (SEQ
1996          (NULL
1997           (EQL |d|
1998                (PROGN
1999                 (LETT #2# NIL)
2000                 (SEQ (LETT #6# NIL) (LETT #5# |ld|) G190
2001                      (COND
2002                       ((OR (ATOM #5#) (PROGN (LETT #6# (CAR #5#)) NIL))
2003                        (GO G191)))
2004                      (SEQ
2005                       (EXIT
2006                        (PROGN
2007                         (LETT #4# #6#)
2008                         (COND (#2# (LETT #3# (+ #3# #4#)))
2009                               ('T (PROGN (LETT #3# #4#) (LETT #2# 'T)))))))
2010                      (LETT #5# (CDR #5#)) (GO G190) G191 (EXIT NIL))
2011                 (COND (#2# #3#) ('T 0))))))))
2012
2013(SDEFUN |GALFACT;makeSet|
2014        ((|ld| |List| (|NonNegativeInteger|)) ($ |Set| (|NonNegativeInteger|)))
2015        (SPROG ((|s| (|Set| (|NonNegativeInteger|))) (#1=#:G879 NIL) (|d| NIL))
2016               (SEQ (LETT |s| (SPADCALL (LIST 0) (QREFELT $ 49)))
2017                    (SEQ (LETT |d| NIL) (LETT #1# |ld|) G190
2018                         (COND
2019                          ((OR (ATOM #1#) (PROGN (LETT |d| (CAR #1#)) NIL))
2020                           (GO G191)))
2021                         (SEQ
2022                          (EXIT
2023                           (LETT |s|
2024                                 (SPADCALL |s| (|GALFACT;shiftSet| |s| |d| $)
2025                                           (QREFELT $ 79)))))
2026                         (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
2027                    (EXIT |s|))))
2028
2029(SDEFUN |GALFACT;factor;UPLNniF;39|
2030        ((|f| UP) (|ld| |List| (|NonNegativeInteger|))
2031         (|r| |NonNegativeInteger|) ($ |Factored| UP))
2032        (COND
2033         ((|GALFACT;errorsum?| (SPADCALL |f| (QREFELT $ 39)) |ld| $)
2034          (|error| "factor: Bad arguments"))
2035         ('T
2036          (SPADCALL
2037           (SPADCALL |f| NIL (|GALFACT;makeSet| |ld| $) |r| (QREFELT $ 167))
2038           (QREFELT $ 143)))))
2039
2040(SDEFUN |GALFACT;factor;UPNniF;40|
2041        ((|f| UP) (|r| |NonNegativeInteger|) ($ |Factored| UP))
2042        (SPADCALL
2043         (SPADCALL |f| NIL (|GALFACT;fullSet| (SPADCALL |f| (QREFELT $ 39)) $)
2044                   |r| (QREFELT $ 167))
2045         (QREFELT $ 143)))
2046
2047(SDEFUN |GALFACT;factor;UPLF;41|
2048        ((|f| UP) (|ld| |List| (|NonNegativeInteger|)) ($ |Factored| UP))
2049        (SPADCALL |f| |ld| 2 (QREFELT $ 169)))
2050
2051(SDEFUN |GALFACT;factor;UP2NniF;42|
2052        ((|f| UP) (|d| |NonNegativeInteger|) (|r| |NonNegativeInteger|)
2053         ($ |Factored| UP))
2054        (SPROG ((|n| (|Union| (|NonNegativeInteger|) "failed")))
2055               (SEQ
2056                (LETT |n|
2057                      (SPADCALL (SPADCALL |f| (QREFELT $ 39)) |d|
2058                                (QREFELT $ 126)))
2059                (EXIT
2060                 (COND ((QEQCAR |n| 1) (|error| "factor: Bad arguments"))
2061                       ('T
2062                        (SPADCALL |f| (SPADCALL (QCDR |n|) |d| (QREFELT $ 172))
2063                                  |r| (QREFELT $ 169))))))))
2064
2065(SDEFUN |GALFACT;factorSquareFree;UPF;43| ((|f| UP) ($ |Factored| UP))
2066        (SPADCALL
2067         (COND
2068          ((QREFELT $ 9)
2069           (SPADCALL |f| 'T (|GALFACT;fullSet| (SPADCALL |f| (QREFELT $ 39)) $)
2070                     2 (QREFELT $ 167)))
2071          ('T (SPADCALL |f| 'T (QREFELT $ 166))))
2072         (QREFELT $ 143)))
2073
2074(SDEFUN |GALFACT;factorSquareFree;UPLNniF;44|
2075        ((|f| UP) (|ld| |List| (|NonNegativeInteger|))
2076         (|r| |NonNegativeInteger|) ($ |Factored| UP))
2077        (COND
2078         ((|GALFACT;errorsum?| (SPADCALL |f| (QREFELT $ 39)) |ld| $)
2079          (|error| "factorSquareFree: Bad arguments"))
2080         ('T
2081          (SPADCALL
2082           (SPADCALL |f| 'T (|GALFACT;makeSet| |ld| $) |r| (QREFELT $ 167))
2083           (QREFELT $ 143)))))
2084
2085(SDEFUN |GALFACT;factorSquareFree;UPNniF;45|
2086        ((|f| UP) (|r| |NonNegativeInteger|) ($ |Factored| UP))
2087        (SPADCALL
2088         (SPADCALL |f| 'T (|GALFACT;fullSet| (SPADCALL |f| (QREFELT $ 39)) $)
2089                   |r| (QREFELT $ 167))
2090         (QREFELT $ 143)))
2091
2092(SDEFUN |GALFACT;factorSquareFree;UPLF;46|
2093        ((|f| UP) (|ld| |List| (|NonNegativeInteger|)) ($ |Factored| UP))
2094        (SPADCALL |f| |ld| 2 (QREFELT $ 175)))
2095
2096(SDEFUN |GALFACT;factorSquareFree;UP2NniF;47|
2097        ((|f| UP) (|d| |NonNegativeInteger|) (|r| |NonNegativeInteger|)
2098         ($ |Factored| UP))
2099        (SPROG ((|n| (|Union| (|NonNegativeInteger|) "failed")))
2100               (SEQ
2101                (LETT |n|
2102                      (SPADCALL (SPADCALL |f| (QREFELT $ 39)) |d|
2103                                (QREFELT $ 126)))
2104                (EXIT
2105                 (COND
2106                  ((QEQCAR |n| 1) (|error| "factorSquareFree: Bad arguments"))
2107                  ('T
2108                   (SPADCALL |f| (SPADCALL (QCDR |n|) |d| (QREFELT $ 172)) |r|
2109                             (QREFELT $ 175))))))))
2110
2111(SDEFUN |GALFACT;factorOfDegree;PiUPLNniBU;48|
2112        ((|d| |PositiveInteger|) (|p| UP) (|ld| |List| (|NonNegativeInteger|))
2113         (|r| |NonNegativeInteger|) (|sqf| |Boolean|) ($ |Union| UP "failed"))
2114        (SPROG
2115         ((#1=#:G918 NIL) (#2=#:G919 NIL) (#3=#:G920 NIL) (|f| NIL)
2116          (|lf|
2117           (|List|
2118            (|Record| (|:| |irr| UP) (|:| |pow| (|NonNegativeInteger|)))))
2119          (|dp| (|NonNegativeInteger|)))
2120         (SEQ
2121          (EXIT
2122           (SEQ (LETT |dp| (SPADCALL |p| (QREFELT $ 39)))
2123                (EXIT
2124                 (COND
2125                  ((|GALFACT;errorsum?| |dp| |ld| $)
2126                   (|error| "factorOfDegree: Bad arguments"))
2127                  ('T
2128                   (SEQ
2129                    (COND
2130                     ((EQL |d| 1)
2131                      (COND
2132                       ((SPADCALL |p| (QREFELT $ 131))
2133                        (EXIT (CONS 1 "failed"))))))
2134                    (LETT |lf|
2135                          (QCDR
2136                           (SPADCALL |p| |sqf| (|GALFACT;makeSet| |ld| $) |r|
2137                                     (QREFELT $ 167))))
2138                    (SEQ
2139                     (EXIT
2140                      (SEQ (LETT |f| NIL) (LETT #3# |lf|) G190
2141                           (COND
2142                            ((OR (ATOM #3#) (PROGN (LETT |f| (CAR #3#)) NIL))
2143                             (GO G191)))
2144                           (SEQ
2145                            (EXIT
2146                             (COND
2147                              ((EQL (SPADCALL (QCAR |f|) (QREFELT $ 39)) |d|)
2148                               (PROGN
2149                                (LETT #1#
2150                                      (PROGN
2151                                       (LETT #2# (CONS 0 (QCAR |f|)))
2152                                       (GO #4=#:G917)))
2153                                (GO #5=#:G911))))))
2154                           (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL)))
2155                     #5# (EXIT #1#))
2156                    (EXIT (CONS 1 "failed"))))))))
2157          #4# (EXIT #2#))))
2158
2159(SDEFUN |GALFACT;factorOfDegree;PiUPLNniU;49|
2160        ((|d| |PositiveInteger|) (|p| UP) (|ld| |List| (|NonNegativeInteger|))
2161         (|r| |NonNegativeInteger|) ($ |Union| UP "failed"))
2162        (SPADCALL |d| |p| |ld| |r| NIL (QREFELT $ 180)))
2163
2164(SDEFUN |GALFACT;factorOfDegree;PiUPNniU;50|
2165        ((|d| |PositiveInteger|) (|p| UP) (|r| |NonNegativeInteger|)
2166         ($ |Union| UP "failed"))
2167        (SPADCALL |d| |p|
2168                  (SPADCALL (SPADCALL |p| (QREFELT $ 39)) 1 (QREFELT $ 172))
2169                  |r| NIL (QREFELT $ 180)))
2170
2171(SDEFUN |GALFACT;factorOfDegree;PiUPLU;51|
2172        ((|d| |PositiveInteger|) (|p| UP) (|ld| |List| (|NonNegativeInteger|))
2173         ($ |Union| UP "failed"))
2174        (SPADCALL |d| |p| |ld| 2 NIL (QREFELT $ 180)))
2175
2176(SDEFUN |GALFACT;factorOfDegree;PiUPU;52|
2177        ((|d| |PositiveInteger|) (|p| UP) ($ |Union| UP "failed"))
2178        (SPADCALL |d| |p|
2179                  (SPADCALL (SPADCALL |p| (QREFELT $ 39)) 1 (QREFELT $ 172)) 2
2180                  NIL (QREFELT $ 180)))
2181
2182(DECLAIM (NOTINLINE |GaloisGroupFactorizer;|))
2183
2184(DEFUN |GaloisGroupFactorizer| (#1=#:G937)
2185  (SPROG NIL
2186         (PROG (#2=#:G938)
2187           (RETURN
2188            (COND
2189             ((LETT #2#
2190                    (|lassocShiftWithFunction| (LIST (|devaluate| #1#))
2191                                               (HGET |$ConstructorCache|
2192                                                     '|GaloisGroupFactorizer|)
2193                                               '|domainEqualList|))
2194              (|CDRwithIncrement| #2#))
2195             ('T
2196              (UNWIND-PROTECT
2197                  (PROG1 (|GaloisGroupFactorizer;| #1#) (LETT #2# T))
2198                (COND
2199                 ((NOT #2#)
2200                  (HREM |$ConstructorCache| '|GaloisGroupFactorizer|))))))))))
2201
2202(DEFUN |GaloisGroupFactorizer;| (|#1|)
2203  (SPROG ((|pv$| NIL) ($ NIL) (|dv$| NIL) (DV$1 NIL))
2204         (PROGN
2205          (LETT DV$1 (|devaluate| |#1|))
2206          (LETT |dv$| (LIST '|GaloisGroupFactorizer| DV$1))
2207          (LETT $ (GETREFV 185))
2208          (QSETREFV $ 0 |dv$|)
2209          (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL)))
2210          (|haddProp| |$ConstructorCache| '|GaloisGroupFactorizer| (LIST DV$1)
2211                      (CONS 1 $))
2212          (|stuffDomainSlots| $)
2213          (QSETREFV $ 6 |#1|)
2214          (SETF |pv$| (QREFELT $ 3))
2215          (QSETREFV $ 7 5)
2216          (QSETREFV $ 8 8)
2217          (QSETREFV $ 9 'T)
2218          (QSETREFV $ 10 'T)
2219          (QSETREFV $ 11 'T)
2220          $)))
2221
2222(MAKEPROP '|GaloisGroupFactorizer| '|infovec|
2223          (LIST
2224           '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) '|mussertrials|
2225              '|stopmussertrials| '|usesinglefactorbound|
2226              '|tryfunctionaldecomposition| '|useeisensteincriterion|
2227              (|Boolean|) |GALFACT;useEisensteinCriterion?;B;1|
2228              |GALFACT;useEisensteinCriterion;2B;2|
2229              |GALFACT;tryFunctionalDecomposition?;B;3|
2230              |GALFACT;tryFunctionalDecomposition;2B;4|
2231              |GALFACT;useSingleFactorBound?;B;5|
2232              |GALFACT;useSingleFactorBound;2B;6| (|PositiveInteger|)
2233              |GALFACT;stopMusserTrials;Pi;7| |GALFACT;stopMusserTrials;2Pi;8|
2234              |GALFACT;musserTrials;Pi;9| |GALFACT;musserTrials;2Pi;10|
2235              (0 . |reductum|) (|Integer|) (5 . |content|) (10 . |unit?|)
2236              (15 . |leadingCoefficient|) (20 . |zero?|) (|Factored| $)
2237              (25 . |factor|) (|Union| '"nil" '"sqfr" '"irred" '"prime")
2238              (|Record| (|:| |flag| 32) (|:| |factor| 25) (|:| |exponent| 38))
2239              (|List| 33) (|Factored| 25) (30 . |factorList|)
2240              |GALFACT;eisensteinIrreducible?;UPB;11| (|NonNegativeInteger|)
2241              (35 . |degree|) (|Record| (|:| |factor| 6) (|:| |degree| 25))
2242              (|List| 40) |GALFACT;numberOfFactors;LNni;12| (40 . +)
2243              (|Mapping| 38 38) (|Set| 38) (46 . |map|) (52 . |One|)
2244              (|List| 38) (56 . |set|) (|SparseUnivariatePolynomial| 25)
2245              (61 . |makeSUP|) (|U32Vector|) (|U32VectorPolynomialOperations|)
2246              (66 . |to_mod_pa|) (72 . |gcd|) (79 . |degree|)
2247              (|ModularDistinctDegreeFactorizer| 6) (84 . |gcd|) (91 . |Zero|)
2248              (95 . |pa_to_sup|) (100 . |unmakeSUP|) (105 . |coerce|)
2249              (110 . ~=) (116 . |invmod|) (|Void|) (122 . |mul_by_scalar|)
2250              (|Mapping| (|List| 52))
2251              (|Record| (|:| |poly| 52) (|:| |degree| 38)
2252                        (|:| |separate_factors| 67))
2253              (|List| 68) (|ModularFactorization|) (130 . |ddfact|)
2254              (136 . |ddFact|) (|List| 6) (142 . |separateFactors|)
2255              (148 . |empty|) (152 . |differentiate|)
2256              (|IntegerPrimesPackage| 25) (157 . |nextPrime|) (162 . |union|)
2257              (168 . |intersect|) (174 . =) (180 . |#|)
2258              (|Record| (|:| |prime| 25) (|:| |factors| 73))
2259              |GALFACT;modularFactor;UPSR;22| (|Multiset| 38) (185 . |empty|)
2260              (189 . |insert!|) (195 . |insert!|)
2261              |GALFACT;degreePartition;LM;23| (202 . <=) (208 . |rem|)
2262              (214 . |Zero|) (218 . =) (|Mapping| 12 38) (224 . |select|)
2263              (|BrillhartTests| 6) (230 . |brillhartIrreducible?|)
2264              (|Record| (|:| |left| 6) (|:| |right| 6)) (|Union| 98 '"failed")
2265              (|UnivariatePolynomialDecompositionPackage| 25 6)
2266              (235 . |monicDecomposeIfCan|)
2267              (|GaloisGroupFactorizationUtilities| 25 6 (|Float|))
2268              (240 . |beauzamyBound|) (|GeneralHenselPackage| 25 6)
2269              (245 . |completeHensel|) (253 . |elt|) (259 . |append|)
2270              (265 . |coefficient|) (271 . |bit?|) (277 . |elt|)
2271              (283 . |symmetricRemainder|) (289 . |member?|)
2272              (|Union| $ '"failed") (295 . |exquo|) (301 . *)
2273              (307 . |reduction|) (313 . |primitivePart|) (318 . |exquo|)
2274              (324 . |swap!|) (331 . |rest|) (337 . |setrest!|)
2275              (343 . |singleFactorBound|)
2276              (|Record| (|:| |plist| 73) (|:| |modulo| 25))
2277              (349 . |HenselLift|) (357 . |parts|) (362 . |exquo|)
2278              (368 . |max|) (|GaloisGroupPolynomialUtilities| 25 6)
2279              (373 . |reverse|) (378 . -) (383 . |noLinearFactor?|)
2280              (388 . |remove|) (394 . |ground?|) (399 . |subtractIfCan|)
2281              (405 . |setelt!|) (412 . |unit|)
2282              (|Record| (|:| |flag| 32) (|:| |factor| 6) (|:| |exponent| 38))
2283              (|List| 137) (|Factored| 6) (417 . |makeFR|)
2284              (|Record| (|:| |irr| 6) (|:| |pow| 38))
2285              (|Record| (|:| |contp| 25) (|:| |factors| 162))
2286              |GALFACT;makeFR;RF;30| (|Union| 25 '"failed") (|IntegerRoots| 25)
2287              (423 . |perfectSqrt|) (428 . |monomial|) (434 . +)
2288              (440 . |monomial|) (446 . |elt|) (452 . |exquo|)
2289              (458 . |minimumDegree|)
2290              (|Record| (|:| |quotient| $) (|:| |remainder| $))
2291              (463 . |monicDivide|) (469 . =) (|List| 50)
2292              (|CyclotomicPolynomialPackage|) (475 . |cyclotomicDecomposition|)
2293              (|Mapping| 6 50) (|ListFunctions2| 50 6) (480 . |map|)
2294              (|List| 141) (486 . |append|) (492 . |squareFree|)
2295              (497 . |factorList|) |GALFACT;henselFact;UPBR;34|
2296              |GALFACT;btwFact;UPBSNniR;35| |GALFACT;factor;UPF;36|
2297              |GALFACT;factor;UPLNniF;39| |GALFACT;factor;UPNniF;40|
2298              |GALFACT;factor;UPLF;41| (502 . |new|)
2299              |GALFACT;factor;UP2NniF;42| |GALFACT;factorSquareFree;UPF;43|
2300              |GALFACT;factorSquareFree;UPLNniF;44|
2301              |GALFACT;factorSquareFree;UPNniF;45|
2302              |GALFACT;factorSquareFree;UPLF;46|
2303              |GALFACT;factorSquareFree;UP2NniF;47| (|Union| 6 '"failed")
2304              |GALFACT;factorOfDegree;PiUPLNniBU;48|
2305              |GALFACT;factorOfDegree;PiUPLNniU;49|
2306              |GALFACT;factorOfDegree;PiUPNniU;50|
2307              |GALFACT;factorOfDegree;PiUPLU;51|
2308              |GALFACT;factorOfDegree;PiUPU;52|)
2309           '#(|useSingleFactorBound?| 508 |useSingleFactorBound| 512
2310              |useEisensteinCriterion?| 517 |useEisensteinCriterion| 521
2311              |tryFunctionalDecomposition?| 526 |tryFunctionalDecomposition|
2312              530 |stopMusserTrials| 535 |numberOfFactors| 544 |musserTrials|
2313              549 |modularFactor| 558 |makeFR| 564 |henselFact| 569
2314              |factorSquareFree| 575 |factorOfDegree| 606 |factor| 643
2315              |eisensteinIrreducible?| 674 |degreePartition| 679 |btwFact| 684)
2316           'NIL
2317           (CONS (|makeByteWordVec2| 1 '(0))
2318                 (CONS '#(NIL)
2319                       (CONS
2320                        '#((|Join|
2321                            (|mkCategory|
2322                             (LIST
2323                              '((|makeFR|
2324                                 ((|Factored| |#1|)
2325                                  (|Record| (|:| |contp| (|Integer|))
2326                                            (|:| |factors|
2327                                                 (|List|
2328                                                  (|Record| (|:| |irr| |#1|)
2329                                                            (|:| |pow|
2330                                                                 (|NonNegativeInteger|))))))))
2331                                T)
2332                              '((|degreePartition|
2333                                 ((|Multiset| (|NonNegativeInteger|))
2334                                  (|List|
2335                                   (|Record| (|:| |factor| |#1|)
2336                                             (|:| |degree| (|Integer|))))))
2337                                T)
2338                              '((|musserTrials| ((|PositiveInteger|))) T)
2339                              '((|musserTrials|
2340                                 ((|PositiveInteger|) (|PositiveInteger|)))
2341                                T)
2342                              '((|stopMusserTrials| ((|PositiveInteger|))) T)
2343                              '((|stopMusserTrials|
2344                                 ((|PositiveInteger|) (|PositiveInteger|)))
2345                                T)
2346                              '((|numberOfFactors|
2347                                 ((|NonNegativeInteger|)
2348                                  (|List|
2349                                   (|Record| (|:| |factor| |#1|)
2350                                             (|:| |degree| (|Integer|))))))
2351                                T)
2352                              '((|modularFactor|
2353                                 ((|Record| (|:| |prime| (|Integer|))
2354                                            (|:| |factors| (|List| |#1|)))
2355                                  |#1| (|Set| (|NonNegativeInteger|))))
2356                                T)
2357                              '((|useSingleFactorBound?| ((|Boolean|))) T)
2358                              '((|useSingleFactorBound|
2359                                 ((|Boolean|) (|Boolean|)))
2360                                T)
2361                              '((|useEisensteinCriterion?| ((|Boolean|))) T)
2362                              '((|useEisensteinCriterion|
2363                                 ((|Boolean|) (|Boolean|)))
2364                                T)
2365                              '((|eisensteinIrreducible?| ((|Boolean|) |#1|))
2366                                T)
2367                              '((|tryFunctionalDecomposition?| ((|Boolean|)))
2368                                T)
2369                              '((|tryFunctionalDecomposition|
2370                                 ((|Boolean|) (|Boolean|)))
2371                                T)
2372                              '((|factor| ((|Factored| |#1|) |#1|)) T)
2373                              '((|factor|
2374                                 ((|Factored| |#1|) |#1|
2375                                  (|NonNegativeInteger|)))
2376                                T)
2377                              '((|factor|
2378                                 ((|Factored| |#1|) |#1|
2379                                  (|List| (|NonNegativeInteger|))))
2380                                T)
2381                              '((|factor|
2382                                 ((|Factored| |#1|) |#1|
2383                                  (|List| (|NonNegativeInteger|))
2384                                  (|NonNegativeInteger|)))
2385                                T)
2386                              '((|factor|
2387                                 ((|Factored| |#1|) |#1| (|NonNegativeInteger|)
2388                                  (|NonNegativeInteger|)))
2389                                T)
2390                              '((|factorSquareFree| ((|Factored| |#1|) |#1|))
2391                                T)
2392                              '((|factorSquareFree|
2393                                 ((|Factored| |#1|) |#1|
2394                                  (|NonNegativeInteger|)))
2395                                T)
2396                              '((|factorSquareFree|
2397                                 ((|Factored| |#1|) |#1|
2398                                  (|List| (|NonNegativeInteger|))))
2399                                T)
2400                              '((|factorSquareFree|
2401                                 ((|Factored| |#1|) |#1|
2402                                  (|List| (|NonNegativeInteger|))
2403                                  (|NonNegativeInteger|)))
2404                                T)
2405                              '((|factorSquareFree|
2406                                 ((|Factored| |#1|) |#1| (|NonNegativeInteger|)
2407                                  (|NonNegativeInteger|)))
2408                                T)
2409                              '((|factorOfDegree|
2410                                 ((|Union| |#1| "failed") (|PositiveInteger|)
2411                                  |#1|))
2412                                T)
2413                              '((|factorOfDegree|
2414                                 ((|Union| |#1| "failed") (|PositiveInteger|)
2415                                  |#1| (|NonNegativeInteger|)))
2416                                T)
2417                              '((|factorOfDegree|
2418                                 ((|Union| |#1| "failed") (|PositiveInteger|)
2419                                  |#1| (|List| (|NonNegativeInteger|))))
2420                                T)
2421                              '((|factorOfDegree|
2422                                 ((|Union| |#1| "failed") (|PositiveInteger|)
2423                                  |#1| (|List| (|NonNegativeInteger|))
2424                                  (|NonNegativeInteger|)))
2425                                T)
2426                              '((|factorOfDegree|
2427                                 ((|Union| |#1| "failed") (|PositiveInteger|)
2428                                  |#1| (|List| (|NonNegativeInteger|))
2429                                  (|NonNegativeInteger|) (|Boolean|)))
2430                                T)
2431                              '((|henselFact|
2432                                 ((|Record| (|:| |contp| (|Integer|))
2433                                            (|:| |factors|
2434                                                 (|List|
2435                                                  (|Record| (|:| |irr| |#1|)
2436                                                            (|:| |pow|
2437                                                                 (|NonNegativeInteger|))))))
2438                                  |#1| (|Boolean|)))
2439                                T)
2440                              '((|btwFact|
2441                                 ((|Record| (|:| |contp| (|Integer|))
2442                                            (|:| |factors|
2443                                                 (|List|
2444                                                  (|Record| (|:| |irr| |#1|)
2445                                                            (|:| |pow|
2446                                                                 (|NonNegativeInteger|))))))
2447                                  |#1| (|Boolean|)
2448                                  (|Set| (|NonNegativeInteger|))
2449                                  (|NonNegativeInteger|)))
2450                                T))
2451                             (LIST) NIL NIL)))
2452                        (|makeByteWordVec2| 184
2453                                            '(1 6 0 0 24 1 6 25 0 26 1 25 12 0
2454                                              27 1 6 25 0 28 1 6 12 0 29 1 25
2455                                              30 0 31 1 35 34 0 36 1 6 38 0 39
2456                                              2 38 0 0 0 43 2 45 0 44 0 46 0 6
2457                                              0 47 1 45 0 48 49 1 6 50 0 51 2
2458                                              53 52 50 25 54 3 53 52 52 52 25
2459                                              55 1 53 25 52 56 3 57 6 6 6 25 58
2460                                              0 6 0 59 1 53 50 52 60 1 6 0 50
2461                                              61 1 6 0 25 62 2 25 12 0 0 63 2
2462                                              25 0 0 0 64 4 53 65 52 25 25 25
2463                                              66 2 70 69 52 25 71 2 57 41 6 25
2464                                              72 2 57 73 41 25 74 0 45 0 75 1 6
2465                                              0 0 76 1 77 25 25 78 2 45 0 0 0
2466                                              79 2 45 0 0 0 80 2 45 12 0 0 81 1
2467                                              48 38 0 82 0 85 0 86 2 85 0 38 0
2468                                              87 3 85 0 38 0 38 88 2 38 12 0 0
2469                                              90 2 38 0 0 0 91 0 38 0 92 2 38
2470                                              12 0 0 93 2 45 0 94 0 95 1 96 12
2471                                              6 97 1 100 99 6 101 1 102 25 6
2472                                              103 4 104 73 6 73 25 19 105 2 6 0
2473                                              0 0 106 2 73 0 0 0 107 2 6 25 0
2474                                              38 108 2 25 12 0 0 109 2 73 6 0
2475                                              25 110 2 25 0 0 0 111 2 45 12 38
2476                                              0 112 2 25 113 0 0 114 2 6 0 0 0
2477                                              115 2 104 6 6 25 116 1 6 0 0 117
2478                                              2 6 113 0 0 118 3 73 65 0 25 25
2479                                              119 2 73 0 0 38 120 2 73 0 0 0
2480                                              121 2 102 25 6 38 122 4 104 123 6
2481                                              73 25 19 124 1 45 48 0 125 2 38
2482                                              113 0 0 126 1 45 38 0 127 1 128 6
2483                                              6 129 1 6 0 0 130 1 96 12 6 131 2
2484                                              45 0 38 0 132 1 6 12 0 133 2 38
2485                                              113 0 0 134 3 73 6 0 25 6 135 1
2486                                              35 25 0 136 2 139 0 6 138 140 1
2487                                              145 144 25 146 2 6 0 25 38 147 2
2488                                              6 0 0 0 148 2 50 0 25 38 149 2 50
2489                                              0 0 0 150 2 6 113 0 25 151 1 6 38
2490                                              0 152 2 6 153 0 0 154 2 6 12 0 0
2491                                              155 1 157 156 25 158 2 160 73 159
2492                                              156 161 2 162 0 0 0 163 1 6 30 0
2493                                              164 1 139 138 0 165 2 48 0 38 38
2494                                              172 0 0 12 17 1 0 12 12 18 0 0 12
2495                                              13 1 0 12 12 14 0 0 12 15 1 0 12
2496                                              12 16 1 0 19 19 21 0 0 19 20 1 0
2497                                              38 41 42 1 0 19 19 23 0 0 19 22 2
2498                                              0 83 6 45 84 1 0 139 142 143 2 0
2499                                              142 6 12 166 2 0 139 6 38 176 1 0
2500                                              139 6 174 3 0 139 6 48 38 175 2 0
2501                                              139 6 48 177 3 0 139 6 38 38 178
2502                                              2 0 179 19 6 184 3 0 179 19 6 48
2503                                              183 3 0 179 19 6 38 182 5 0 179
2504                                              19 6 48 38 12 180 4 0 179 19 6 48
2505                                              38 181 1 0 139 6 168 2 0 139 6 48
2506                                              171 2 0 139 6 38 170 3 0 139 6 38
2507                                              38 173 3 0 139 6 48 38 169 1 0 12
2508                                              6 37 1 0 85 41 89 4 0 142 6 12 45
2509                                              38 167)))))
2510           '|lookupComplete|))
2511