Bribing a computer to compute the roots of (A4f) polynomial. Our (A4f) polynomial was h(x) = [x + 5] * [x - 11] * [x + 37]. In class, we saw its reduction mod 8, mod 3, and mod 5, and we found the respective roots. Working mod-8: h_8(x) = [x - 3] * [x - 3] * [x - 3]. Working mod-3: h_5(x) = [x - 1] * [x - 2] * [x - 2]. Working mod-5: h_5(x) = [x - 0] * [x - 1] * [x - 3]. ========================================================= Promising my computer an extra mouse, I asked its help: ========================================================= % (defun hof (x) (* (+ x 5) (- x 11) (+ x 37))) % (setq CRT-8-3-5 (cree-crt 8 3 5)) => #S(CHINESE-FUSION::CRTSTR :EUCLDOM #1=<> :PROD 120 :MODULI #(8 3 5) :REDUCEDPRODS #(15 40 24) :MAGICNUMS #(105 40 96)) % (setq U (CRTSTR-PROD CRT-8-3-5)) => 120 % (setq roots8 '(1 3 5 7) roots3 '(1 2) roots5 '(0 1 3)) % (print-h-table roots8 roots3 roots5) root8 root3 root5 | URoot | h(URoot) | Mod-U 1 1 0 | 25 | 26040 | 0 1 1 1 | 1 | -2280 | 0 1 1 3 | -47 | -24360 | 0 << 1 2 0 | -55 | -59400 | 0 1 2 1 | 41 | 107640 | 0 1 2 3 | -7 | 1080 | 0 3 1 0 | -5 | 0 | 0 3 1 1 | -29 | 7680 | 0 3 1 3 | 43 | 122880 | 0 3 2 0 | 35 | 69120 | 0 3 2 1 | 11 | 0 | 0 3 2 3 | -37 | 0 | 0 5 1 0 | -35 | 2760 | 0 5 1 1 | -59 | -83160 | 0 5 1 3 | 13 | 1800 | 0 5 2 0 | 5 | -2520 | 0 5 2 1 | -19 | 7560 | 0 5 2 3 | 53 | 219240 | 0 7 1 0 | 55 | 242880 | 0 7 1 1 | 31 | 48960 | 0 7 1 3 | -17 | 6720 | 0 7 2 0 | -25 | 8640 | 0 7 2 1 | -49 | -31680 | 0 7 2 3 | 23 | 20160 | 0 ================ Recall: For modulus-tuple (8,3,5), the magic tuple is :MAGICNUMS #(105 40 96)) Here is computation "by hand": % (setq M1 8 M2 3 M3 5 U (* M1 M2 M3)) => 120 % (setq R1 (/ U M1) R2 (/ U M2) R3 (/ U M3)) Here are the reduced products: % (list R1 R2 R3) => (15 40 24) % (lightning R1 M1) /---< This column Not needed. / n: r_n q_n s_n t_n /---------------------------\ 0: 15 -- 1 0 1: 8 1 0 1 2: 7 1 1 -1 3: 1 7 -1 2 4: 0 Infty 8 -15 \___________________________/ 1 = [15]*[-1] + [8]*[2]. % (setq RecipR1 -1 ) % (lightning R2 M2) n: r_n q_n s_n t_n /---------------------------\ 0: 40 -- 1 0 1: 3 13 0 1 2: 1 3 1 -13 3: 0 Infty -3 40 \___________________________/ 1 = [40]*[1] + [3]*[-13]. % (setq RecipR2 1 ) % (lightning R3 M3) n: r_n q_n s_n t_n /---------------------------\ 0: 24 -- 1 0 1: 5 4 0 1 2: 4 1 1 -4 3: 1 4 -1 5 4: 0 Infty 5 -24 \___________________________/ 1 = [24]*[-1] + [5]*[5]. % (setq RecipR3 -1 ) Now we compute the magic numbers... % (setq MagicList (list (* R1 RecipR1 ) (* R2 RecipR2 ) (* R3 RecipR3 ))) => (-15 40 576) % (iter (for G in MagicList) (for j from 1) (format t "~%G_~D = ~3D" j (modsym G U))) G_1 = 105 G_2 = 40 G_3 = 96 ;; One example: For the root-tuple (1,1,3) we compute % (modsym (+ (* 1 G1) (* 1 G2) (* 3 G3)) 120) -> -47 ;; See "<<", above. ==== End of "chinese-rt3.easier.POLY.txt" ====