On Friday 02 January 2009 13:33:02 H. Peter Anvin wrote: > Rob Landley wrote: > > You mean "The new shell script is much simpler, about 1/4 the size, runs > > on Red Hat 9 from 2003, and isn't perl?" :) > > And introduces unclear environment dependencies depending on how > external utilities are implemented. I note that sed and printf and such are all susv3. I have an explicit test for 32 bit math in the script that cares, and this worked in Red Hat 9 circa 2003. I consider this a step up from code with an implicit dependency on a CPAN library. > The whole point of why that script was written in Perl was to have > access to arbitrary-precision arithmetic -- after it was shown that bc > would simply lock up on some systems. A) I'm not using bc. B) You don't need arbitrary precision arithmetic, you need around 72 bits worth of arithmetic for the pathological case. C) Your definition of "access to arbitrary-precision arithmetic" includes the following, cut and paste verbatim from your old script: # Precomputed values for systems without Math::BigInt # Generated by: # timeconst.pl --can 24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200 %canned_values = ( 24 => [ '0xa6aaaaab','0x2aaaaaa',26, 125,3, '0xc49ba5e4','0x1fbe76c8b4',37, 3,125, '0xa2c2aaab','0xaaaa',16, 125000,3, '0xc9539b89','0x7fffbce4217d',47, 3,125000, ], 32 => [ '0xfa000000','0x6000000',27, 125,4, '0x83126e98','0xfdf3b645a',36, 4,125, '0xf4240000','0x0',17, 31250,1, '0x8637bd06','0x3fff79c842fa',46, 1,31250, ], 48 => [ '0xa6aaaaab','0x6aaaaaa',27, 125,6, '0xc49ba5e4','0xfdf3b645a',36, 6,125, '0xa2c2aaab','0x15555',17, 62500,3, '0xc9539b89','0x3fffbce4217d',46, 3,62500, ], 64 => [ '0xfa000000','0xe000000',28, 125,8, '0x83126e98','0x7ef9db22d',35, 8,125, '0xf4240000','0x0',18, 15625,1, '0x8637bd06','0x1fff79c842fa',45, 1,15625, ], 100 => [ '0xa0000000','0x0',28, 10,1, '0xcccccccd','0x733333333',35, 1,10, '0x9c400000','0x0',18, 10000,1, '0xd1b71759','0x1fff2e48e8a7',45, 1,10000, ], 122 => [ '0x8325c53f','0xfbcda3a',28, 500,61, '0xf9db22d1','0x7fbe76c8b',35, 61,500, '0x8012e2a0','0x3ef36',18, 500000,61, '0xffda4053','0x1ffffbce4217',45, 61,500000, ], 128 => [ '0xfa000000','0x1e000000',29, 125,16, '0x83126e98','0x3f7ced916',34, 16,125, '0xf4240000','0x40000',19, 15625,2, '0x8637bd06','0xfffbce4217d',44, 2,15625, ], 200 => [ '0xa0000000','0x0',29, 5,1, '0xcccccccd','0x333333333',34, 1,5, '0x9c400000','0x0',19, 5000,1, '0xd1b71759','0xfff2e48e8a7',44, 1,5000, ], 250 => [ '0x80000000','0x0',29, 4,1, '0x80000000','0x180000000',33, 1,4, '0xfa000000','0x0',20, 4000,1, '0x83126e98','0x7ff7ced9168',43, 1,4000, ], 256 => [ '0xfa000000','0x3e000000',30, 125,32, '0x83126e98','0x1fbe76c8b',33, 32,125, '0xf4240000','0xc0000',20, 15625,4, '0x8637bd06','0x7ffde7210be',43, 4,15625, ], 300 => [ '0xd5555556','0x2aaaaaaa',30, 10,3, '0x9999999a','0x1cccccccc',33, 3,10, '0xd0555556','0xaaaaa',20, 10000,3, '0x9d495183','0x7ffcb923a29',43, 3,10000, ], 512 => [ '0xfa000000','0x7e000000',31, 125,64, '0x83126e98','0xfdf3b645',32, 64,125, '0xf4240000','0x1c0000',21, 15625,8, '0x8637bd06','0x3ffef39085f',42, 8,15625, ], 1000 => [ '0x80000000','0x0',31, 1,1, '0x80000000','0x0',31, 1,1, '0xfa000000','0x0',22, 1000,1, '0x83126e98','0x1ff7ced9168',41, 1,1000, ], 1024 => [ '0xfa000000','0xfe000000',32, 125,128, '0x83126e98','0x7ef9db22',31, 128,125, '0xf4240000','0x3c0000',22, 15625,16, '0x8637bd06','0x1fff79c842f',41, 16,15625, ], 1200 => [ '0xd5555556','0xd5555555',32, 5,6, '0x9999999a','0x66666666',31, 6,5, '0xd0555556','0x2aaaaa',22, 2500,3, '0x9d495183','0x1ffcb923a29',41, 3,2500, ] ); Plus a decent chunk of the remaining logic was code to regenerate that table, and to figure out when to use the table and when to compute new values. (And erroring out if the system wasn't capable of doing so.) I don't understand why you didn't just precompute the actual header file output instead or precomputing perl source, but that's a side issue. Rob -- To unsubscribe from this list: send the line "unsubscribe linux-embedded" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html