Built win.arm64 against r3658
[kbuild-mirror.git] / src / oldsed / testsuite / factor.sed
blob4416e357aa53445333272e448a1f4f0ab169e3f6
1 #! /bin/sed -nf
3 s/.*/&;9aaaaaaaaa8aaaaaaaa7aaaaaaa6aaaaaa5aaaaa4aaaa3aaa2aa1a0/
4 :encode
5 s/\(a*\)\([0-9]\)\([0-9]*;.*\2\(a*\)\)/\1\1\1\1\1\1\1\1\1\1\4\3/
6 tencode
7 s/;.*//
9 # Compute a few common factors for speed.  Clear the subst flag
10 t7a
12 # These are placed here to make the flow harder to understand :-)
16 b2a
20 b3a
24 b5a
29 :7a
30 s/^\(aa*\)\1\{6\}$/\1/
32 :5a
33 s/^\(aa*\)\1\{4\}$/\1/
35 :3a
36 s/^\(aa*\)\1\1$/\1/
38 :2a
39 s/^\(aa*\)\1$/\1/
42 /^a$/b
44 # The quotient of dividing by 11 is a limit to the remaining prime factors
45 s/^\(aa*\)\1\{10\}/\1=&/
47 # Pattern space looks like CANDIDATE\nNUMBER.  When a candidate is valid,
48 # the number is divided and the candidate is tried again
49 :factor
50 /^\(a\{7,\}\)=\1\1*$/! {
51   # Decrement CANDIDATE, and search again if it is still >1
52   s/^a//
53   /^aa/b factor
55   # Print the last remaining factor: since it is stored in the NUMBER
56   # rather than in the CANDIDATE, swap 'em: now NUMBER=1
57   s/\(.*\)=\(.*\)/\2=\1/
60 # We have a prime factor in CANDIDATE! Print it
62 s/=.*/;;0a1aa2aaa3aaaa4aaaaa5aaaaaa6aaaaaaa7aaaaaaaa8aaaaaaaaa9/
64 :decode
65 s/^\(a*\)\1\{9\}\(a\{0,9\}\)\([0-9]*;.*[^a]\2\([0-9]\)\)/\1\4\3/
66 /^a/tdecode
67 s/;.*//p
70 :divide
71 s/^\(a*\)\(=b*\)\1/\1\2b/
72 tdivide
73 y/b/a/
75 # If NUMBER = 1, we don't have any more factors
76 /aa$/bfactor