Date: Tue, 14 Aug 2012 07:14:28 +1000 (EST) From: Bruce Evans <brde@optusnet.com.au> To: Stephen Montgomery-Smith <stephen@missouri.edu> Cc: freebsd-numerics@FreeBSD.org, Bruce Evans <brde@optusnet.com.au> Subject: Re: Complex arg-trig functions Message-ID: <20120814055931.Q4897@besplex.bde.org> In-Reply-To: <50295887.2010608@missouri.edu> References: <5017111E.6060003@missouri.edu> <501C361D.4010807@missouri.edu> <20120804165555.X1231@besplex.bde.org> <501D51D7.1020101@missouri.edu> <20120805030609.R3101@besplex.bde.org> <501D9C36.2040207@missouri.edu> <20120805175106.X3574@besplex.bde.org> <501EC015.3000808@missouri.edu> <20120805191954.GA50379@troutmask.apl.washington.edu> <20120807205725.GA10572@server.rulingia.com> <20120809025220.N4114@besplex.bde.org> <5027F07E.9060409@missouri.edu> <20120814003614.H3692@besplex.bde.org> <50295887.2010608@missouri.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-286592833-1344892468=:4897 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Mon, 13 Aug 2012, Stephen Montgomery-Smith wrote: > On 08/13/2012 11:57 AM, Bruce Evans wrote: > >> I finally tested a version of this. I only did simple comparisons (float >> vs double and double vs long double). The results look promising after >> fixing a few bugs: > > Thank you very much for doing the testing, and for fixing the bugs. > >> >> % amd64 float prec, on 2**12 * 2**12 args: > >> % icacosh:max_er = 0x3690000000 436.5000, avg_er = 0.317, #>=1:0.5 = >> 29104:255732 > >> There are negative reasons to have the float versions unless they are not >> wrappers. The reasons to have non-wrappers are to test the algorithm and >> run faster. > > That large max-err for the imaginary part of icacosh for float bothers me. > It means that I haven't thought it through properly. Could you send me the > input values that created this error(s)? It was just a bug in my test program, for scaling denormals. Some cases have an infinite-precision result that is very close to the smallest denormal. When this is rounded imperfectly to 0, implementation details give a special case. I had just fixed this for +0, but forget to mask out the sign bit for testing -0. Somehow this didn't turn up for other functions. > The float versions really are much harder than the double and long-double > versions. And it just doesn't seem worth the effort, because who uses them > when the double versions are available? I doubt that they are really harder. > In my case, not for speed. Because on my machine the float versions are > slightly slower than the double version. The double constants might do that on amd64. 'r *= 0.5F;' would compile to a single multiplication, where r and 0.5F are already in registers. 'r *= 0.5;' would compile to: convert r to double; multiply; convert back to float. Conversions are slower than multiplications. On Phenom, double <-> float conversion has a latency of 7 (?) cycles, while multiplication has a latency of 4 cycles; both have a throughput of 1 instruction/cycle. Sometimes latencies can be hidden, but here there are 3 dependent operations. > Also, you made the comment that in the float version, all the 0.5 should > become 0.5F. Two questions: > 1. Doesn't the compiler do this conversion for me? > 2. What is wrong with using x/2 instead of 0.5*x? You told me in a far > earlier email to use 0.5*x. (Similarly in one place I have a 0.25.) 1. It can't, since x * 0.5F is quite different from x * 0.5 when x is float and float expressions are evaluated in float precision. The former is a float expression, and for example overflows when x = FLT_MAX. The latter is a double expression, so it doesn't overflow when x = FLT_MAX. Maybe the compiler could optimize it to a float expression if its result is immediately assigned to a float variable or cast to float, but this is not a very easy optimization -- the compiler would have to prove that it has the right side effects for all possible values of x. The side effect of overflow happens on assignment. 2. Division tends to be slow, and is slow on x86. On Phenom, division has a latency of 20 cycles and a throughput of 1 per 15 cycles in scalar double precision (17 in vector[2] double precision). Maybe the compiler can optimize division by a power of 2 to a multiplication though. In fact, gcc on x86 does both of these optimizations. With float x, and double y, in a function returning float, 'return x/2.0;' gets turned into float multiplication by 0.5F, but 'y = x/2.0; return y;' only have the division optimization (it converts x to double, multiplies doubles, stores to y, and converts to float). So all of those '* 0.5[F]'s can be turned back into '/ 2's (no need to depend on the optimization by writing 2.0). Optimization of [long] double constants to float (or double) constants is more routine. When you write 'static const long double one = 1;', gcc normally puts a long double at the address of `one' (this is visible to debuggers), but never actually uses it it uses either fld1 on i387 or an unnamed float constant with the same value. At least on i387; loading a float constant automatically extends it and is much faster than loading an (already-extended) long double constant; however, on amd64 a float constant would have to be converted to double for use in double expressions. I added old complex functions to the simple test run. See the attachment for the full list. % amd64 float prec, on 2**12 x 2**12 args: % % ... % rctan: max_er = 0x9708bb4b 4.7198, avg_er = 0.104, #>=1:0.5 = 177976:980356 % rctanh:max_er = 0x9c7f786c 4.8906, avg_er = 0.159, #>=1:0.5 = 635992:2189748 % ... % ictan: max_er = 0x9c7f786c 4.8906, avg_er = 0.159, #>=1:0.5 = 635992:2189748 % ictanh:max_er = 0x9708bb4b 4.7198, avg_er = 0.104, #>=1:0.5 = 177976:980356 All (amd64 float prec) below 4 ulps except these. Have to check my denormal scaling again. % amd64 double prec, on 2**12 x 2**12 args: % ... % rcatan:max_er = 0x8000000000000000 4503599627370496.0000, avg_er = 268435456.212, #>=1:0.5 = 4681:81365 % rcatanh:max_er = 0x8000000000000000 4503599627370496.0000, avg_er = 268435456.047, #>=1:0.5 = 428997:691341 % ... % icatan:max_er = 0x8000000000000000 4503599627370496.0000, avg_er = 268435456.047, #>=1:0.5 = 428997:691341 % icatanh:max_er = 0x8000000000000000 4503599627370496.0000, avg_er = 268435456.212, #>=1:0.5 = 4681:81365 % ... % icsqrt:max_er = 0x8000000000000000 4503599627370496.0000, avg_er = 268435456.476, #>=1:0.5 = 14279:7662849 This was tracked to a known annoying difference between SSE and i387 on NaNs. x+y clears the sign buit on i387 but not on SSE. SSE is correct. % i386 float prec, on 2**12 x 2**12 args: % ... % rcatan:max_er = 0x3c4078ec 1.8829, avg_er = 0.284, #>=1:0.5 = 13260:190836 % rcatanh:max_er = 0x2cef3171 1.4042, avg_er = 0.167, #>=1:0.5 = 4096:420916 i386 is generally more accurate. *atan* now below 4 ulps. % rccos: max_er = 0xb7f10439f3111686 24688206287.5958, avg_er = 1415.000, #>=1:0.5 = 3881364:4046644 % rccosh:max_er = 0xb7f10439f3111686 24688206287.5958, avg_er = 1415.000, #>=1:0.5 = 3881364:4046644 % rcexp: max_er = 0xb7e10439f3111686 24679817679.5958, avg_er = 312.908, #>=1:0.5 = 3884684:4078258 % rcsin: max_er = 0xb80bf11b402ee934 24702322906.0057, avg_er = 807.518, #>=1:0.5 = 3841652:4115524 % rcsinh:max_er = 0xb7f10439f3111686 24688206287.5958, avg_er = 1693.508, #>=1:0.5 = 3880876:4368000 % rctan: max_er = 0xb68d1b1c5151fcc0 24501606626.5413, avg_er = 1627.536, #>=1:0.5 = 3890932:4214696 % rctanh:max_er = 0x125ead9c2ea875d 154097358.0911, avg_er = 1416.635, #>=1:0.5 = 2897540:3523200 % ... % iccos: max_er = 0xb80bf11b402ee934 24702322906.0057, avg_er = 1477.124, #>=1:0.5 = 3824832:4420052 % iccosh:max_er = 0xb80bf11b402ee934 24702322906.0057, avg_er = 1477.124, #>=1:0.5 = 3824832:4420052 % icexp: max_er = 0xb7fbf11b402ee934 24693934298.0057, avg_er = 1736.298, #>=1:0.5 = 3839256:4219864 % icsin: max_er = 0xb7f10439f3111686 24688206287.5958, avg_er = 1693.508, #>=1:0.5 = 3880876:4368000 % icsinh:max_er = 0xb80bf11b402ee934 24702322906.0057, avg_er = 807.518, #>=1:0.5 = 3841652:4115524 % ictan: max_er = 0x125ead9c2ea875d 154097358.0911, avg_er = 1416.635, #>=1:0.5 = 2897540:3523200 % ictanh:max_er = 0xb68d1b1c5151fcc0 24501606626.5413, avg_er = 1632.536, #>=1:0.5 = 3890988:4214752 i387 hardware trig functions are very inaccurate. % sparc64 double prec, on 2**12 x 2**12 args: % rcacos:max_er = 0x36b5 3.4192, avg_er = 0.228, #>=1:0.5 = 2394:125984 % rcacosh:max_er = 0x1f15 1.9426, avg_er = 0.258, #>=1:0.5 = 8464:2737832 % rcasin:max_er = 0x2b8c 2.7217, avg_er = 0.113, #>=1:0.5 = 33296:99148 % rcasinh:max_er = 0x1f15 1.9426, avg_er = 0.258, #>=1:0.5 = 8464:2737800 % rcatan:max_er = 0x2c46 2.7671, avg_er = 0.212, #>=1:0.5 = 4680:81364 % rcatanh:max_er = 0x2970 2.5898, avg_er = 0.047, #>=1:0.5 = 129452:691356 % rclog: max_er = 0xe09 0.8772, avg_er = 0.250, #>=1:0.5 = 0:18348 Everything seemed to be passing on sparc64, but it is 300 to 1000 times slower on long doubles, so not many tests completed. Bruce --0-286592833-1344892468=:4897 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=complex-errtab Content-Transfer-Encoding: BASE64 Content-ID: <20120814071428.M4897@besplex.bde.org> Content-Description: Content-Disposition: attachment; filename=complex-errtab YW1kNjQgZmxvYXQgcHJlYywgb24gMioqMTIgeCAyKioxMiBhcmdzOg0KcmNh Y29zOm1heF9lciA9IDB4NTg0NjA4NDEgMi43NTg1LCBhdmdfZXIgPSAwLjMx NywgIz49MTowLjUgPSAyOTA4NDoyNTU3MTINCnJjYWNvc2g6bWF4X2VyID0g MHg1ZTFlNDVlNiAyLjk0MTIsIGF2Z19lciA9IDAuMjYyLCAjPj0xOjAuNSA9 IDg1ODY4OjM0MTM2ODQNCnJjYXNpbjptYXhfZXIgPSAweDYzMWI4MTgzIDMu MDk3MSwgYXZnX2VyID0gMC4yMDksICM+PTE6MC41ID0gMzgzODg6MzgyNTA4 DQpyY2FzaW5oOm1heF9lciA9IDB4NWUxZTQ1ZTYgMi45NDEyLCBhdmdfZXIg PSAwLjI2MiwgIz49MTowLjUgPSA4NTg2ODozNDEzNjg0DQpyY2F0YW46bWF4 X2VyID0gMHg1MWQ3YzQ3YSAyLjU1NzYsIGF2Z19lciA9IDAuMjkwLCAjPj0x OjAuNSA9IDUyOTg0OjMxODA4NA0KcmNhdGFuaDptYXhfZXIgPSAweDczNDI0 ZDUyIDMuNjAxOCwgYXZnX2VyID0gMC4yMDUsICM+PTE6MC41ID0gMjEyNDI0 OjE0Mzc1ODANCnJjbG9nOiBtYXhfZXIgPSAweDI2ZGZhZTRkIDEuMjE0OCwg YXZnX2VyID0gMC4yNDcsICM+PTE6MC41ID0gMTg0OjkyMjQ0DQpyY3NxcnQ6 bWF4X2VyID0gIDB4ZmZmZmFmMCAwLjUwMDAsIGF2Z19lciA9IDAuMjkyLCAj Pj0xOjAuNSA9IDA6MA0KcmNjb3M6IG1heF9lciA9IDB4NTMzMzUxYmEgMi42 MDAwLCBhdmdfZXIgPSAwLjA4OCwgIz49MTowLjUgPSA1ODkzMjozMTIwODgN CnJjY29zaDptYXhfZXIgPSAweDUzMzM1MWJhIDIuNjAwMCwgYXZnX2VyID0g MC4wODgsICM+PTE6MC41ID0gNTg5MzI6MzEyMDg4DQpyY2V4cDogbWF4X2Vy ID0gMHg0MmJmMzdlNSAyLjA4NTgsIGF2Z19lciA9IDAuMDk2LCAjPj0xOjAu NSA9IDU5MDc2OjQ0MzkwNA0KcmNzaW46IG1heF9lciA9IDB4NTIyMGUwNGIg Mi41NjY1LCBhdmdfZXIgPSAwLjA5NSwgIz49MTowLjUgPSA4NDU2NDo0Njg0 ODANCnJjc2luaDptYXhfZXIgPSAweDQ1YmFkY2U4IDIuMTc5MSwgYXZnX2Vy ID0gMC4xMDcsICM+PTE6MC41ID0gNjQyMjA6MTIwODQ2NA0KcmN0YW46IG1h eF9lciA9IDB4OTcwOGJiNGIgNC43MTk4LCBhdmdfZXIgPSAwLjEwNCwgIz49 MTowLjUgPSAxNzc5NzY6OTgwMzU2DQpyY3Rhbmg6bWF4X2VyID0gMHg5Yzdm Nzg2YyA0Ljg5MDYsIGF2Z19lciA9IDAuMTU5LCAjPj0xOjAuNSA9IDYzNTk5 MjoyMTg5NzQ4DQppY2Fjb3M6bWF4X2VyID0gMHg1ZTFlNDVlNiAyLjk0MTIs IGF2Z19lciA9IDAuMjYyLCAjPj0xOjAuNSA9IDg1ODY4OjM0MTM2ODQNCmlj YWNvc2g6bWF4X2VyID0gMHg1ODQ2MDg0MSAyLjc1ODUsIGF2Z19lciA9IDAu MzE3LCAjPj0xOjAuNSA9IDI5MDg0OjI1NTcxMg0KaWNhc2luOm1heF9lciA9 IDB4NWUxZTQ1ZTYgMi45NDEyLCBhdmdfZXIgPSAwLjI2MiwgIz49MTowLjUg PSA4NTg2ODozNDEzNjg0DQppY2FzaW5oOm1heF9lciA9IDB4NjMxYjgxODMg My4wOTcxLCBhdmdfZXIgPSAwLjIwOSwgIz49MTowLjUgPSAzODM4ODozODI1 MDgNCmljYXRhbjptYXhfZXIgPSAweDczNDI0ZDUyIDMuNjAxOCwgYXZnX2Vy ID0gMC4yMDUsICM+PTE6MC41ID0gMjEyNDI0OjE0Mzc1ODANCmljYXRhbmg6 bWF4X2VyID0gMHg1MWQ3YzQ3YSAyLjU1NzYsIGF2Z19lciA9IDAuMjkwLCAj Pj0xOjAuNSA9IDUyOTg0OjMxODA4NA0KaWNsb2c6IG1heF9lciA9IDB4MWZj MmI0ZjUgMC45OTI1LCBhdmdfZXIgPSAwLjMwMiwgIz49MTowLjUgPSAwOjM0 OTgzMA0KaWNzcXJ0Om1heF9lciA9ICAweGZmZmZhZjAgMC41MDAwLCBhdmdf ZXIgPSAwLjI5MiwgIz49MTowLjUgPSAwOjANCmljY29zOiBtYXhfZXIgPSAw eDQ2ZDU2ZTZiIDIuMjEzNiwgYXZnX2VyID0gMC4xMzksICM+PTE6MC41ID0g ODM2MDA6MTM1NzIwNA0KaWNjb3NoOm1heF9lciA9IDB4NDZkNTZlNmIgMi4y MTM2LCBhdmdfZXIgPSAwLjEzOSwgIz49MTowLjUgPSA4MzYwMDoxMzU3MjA0 DQppY2V4cDogbWF4X2VyID0gMHgzZmQxZThkZSAxLjk5NDQsIGF2Z19lciA9 IDAuMTA0LCAjPj0xOjAuNSA9IDgwNzM4OjY1MDY2MA0KaWNzaW46IG1heF9l ciA9IDB4NDViYWRjZTggMi4xNzkxLCBhdmdfZXIgPSAwLjEwNywgIz49MTow LjUgPSA2NDIyMDoxMjA4NDY0DQppY3Npbmg6bWF4X2VyID0gMHg1MjIwZTA0 YiAyLjU2NjUsIGF2Z19lciA9IDAuMDk1LCAjPj0xOjAuNSA9IDg0NTY0OjQ2 ODQ4MA0KaWN0YW46IG1heF9lciA9IDB4OWM3Zjc4NmMgNC44OTA2LCBhdmdf ZXIgPSAwLjE1OSwgIz49MTowLjUgPSA2MzU5OTI6MjE4OTc0OA0KaWN0YW5o Om1heF9lciA9IDB4OTcwOGJiNGIgNC43MTk4LCBhdmdfZXIgPSAwLjEwNCwg Iz49MTowLjUgPSAxNzc5NzY6OTgwMzU2DQoNCmFtZDY0IGRvdWJsZSBwcmVj LCBvbiAyKioxMiB4IDIqKjEyIGFyZ3M6DQpyY2Fjb3M6bWF4X2VyID0gICAg IDB4MWI1YSAzLjQxODksIGF2Z19lciA9IDAuMjI4LCAjPj0xOjAuNSA9IDIz OTQ6MTI1OTg4DQpyY2Fjb3NoOm1heF9lciA9ICAgICAgMHhmN2QgMS45MzYw LCBhdmdfZXIgPSAwLjI1NywgIz49MTowLjUgPSA2MTI6Mjc0MTg2MA0KcmNh c2luOm1heF9lciA9ICAgICAweDE1YzUgMi43MjEyLCBhdmdfZXIgPSAwLjEx MywgIz49MTowLjUgPSAzMzI5Njo5OTE1Mg0KcmNhc2luaDptYXhfZXIgPSAg ICAgIDB4ZjdkIDEuOTM2MCwgYXZnX2VyID0gMC4yNTcsICM+PTE6MC41ID0g NjEyOjI3NDE3OTYNCnJjYXRhbjptYXhfZXIgPSAweDgwMDAwMDAwMDAwMDAw MDAgNDUwMzU5OTYyNzM3MDQ5Ni4wMDAwLCBhdmdfZXIgPSAyNjg0MzU0NTYu MjEyLCAjPj0xOjAuNSA9IDQ2ODE6ODEzNjUNCnJjYXRhbmg6bWF4X2VyID0g MHg4MDAwMDAwMDAwMDAwMDAwIDQ1MDM1OTk2MjczNzA0OTYuMDAwMCwgYXZn X2VyID0gMjY4NDM1NDU2LjA0NywgIz49MTowLjUgPSA0Mjg5OTc6NjkxMzQx DQpyY2xvZzogbWF4X2VyID0gICAgICAweDcwNCAwLjg3NzAsIGF2Z19lciA9 IDAuMjUwLCAjPj0xOjAuNSA9IDA6MjAxNTINCnJjc3FydDptYXhfZXIgPSAg ICAweDExNTk0IDM0LjY5NzMsIGF2Z19lciA9IDAuNDc2LCAjPj0xOjAuNSA9 IDEyMjMyOjc2NjA4MDINCmljYWNvczptYXhfZXIgPSAgICAgIDB4ZjdkIDEu OTM2MCwgYXZnX2VyID0gMC4yNTcsICM+PTE6MC41ID0gNjEyOjI3NDE4NjAN CmljYWNvc2g6bWF4X2VyID0gICAgIDB4MWI1YSAzLjQxODksIGF2Z19lciA9 IDAuMjI4LCAjPj0xOjAuNSA9IDIzOTQ6MTI1OTg4DQppY2FzaW46bWF4X2Vy ID0gICAgICAweGY3ZCAxLjkzNjAsIGF2Z19lciA9IDAuMjU3LCAjPj0xOjAu NSA9IDYxMjoyNzQxNzk2DQppY2FzaW5oOm1heF9lciA9ICAgICAweDE1YzUg Mi43MjEyLCBhdmdfZXIgPSAwLjExMywgIz49MTowLjUgPSAzMzI5Njo5OTE1 Mg0KaWNhdGFuOm1heF9lciA9IDB4ODAwMDAwMDAwMDAwMDAwMCA0NTAzNTk5 NjI3MzcwNDk2LjAwMDAsIGF2Z19lciA9IDI2ODQzNTQ1Ni4wNDcsICM+PTE6 MC41ID0gNDI4OTk3OjY5MTM0MQ0KaWNhdGFuaDptYXhfZXIgPSAweDgwMDAw MDAwMDAwMDAwMDAgNDUwMzU5OTYyNzM3MDQ5Ni4wMDAwLCBhdmdfZXIgPSAy Njg0MzU0NTYuMjEyLCAjPj0xOjAuNSA9IDQ2ODE6ODEzNjUNCmljbG9nOiBt YXhfZXIgPSAgICAgIDB4NmY0IDAuODY5MSwgYXZnX2VyID0gMC4yMTMsICM+ PTE6MC41ID0gMDoxODEwMzINCmljc3FydDptYXhfZXIgPSAweDgwMDAwMDAw MDAwMDAwMDAgNDUwMzU5OTYyNzM3MDQ5Ni4wMDAwLCBhdmdfZXIgPSAyNjg0 MzU0NTYuNDc2LCAjPj0xOjAuNSA9IDE0Mjc5Ojc2NjI4NDkNCg0KaTM4NiBm bG9hdCBwcmVjLCBvbiAyKioxMiB4IDIqKjEyIGFyZ3M6DQpyY2Fjb3M6bWF4 X2VyID0gMHg0MmNkMTljNiAyLjA4NzUsIGF2Z19lciA9IDAuMzE0LCAjPj0x OjAuNSA9IDM4NTQ6MjE1MTE2DQpyY2Fjb3NoOm1heF9lciA9IDB4MzE3MGUy MzIgMS41NDUwLCBhdmdfZXIgPSAwLjI1NCwgIz49MTowLjUgPSAyMzAwODoz MjQ1MDI4DQpyY2FzaW46bWF4X2VyID0gMHg1NWFkYzBkZiAyLjY3NzUsIGF2 Z19lciA9IDAuMjA4LCAjPj0xOjAuNSA9IDM0MzA0OjM1Mzk4MA0KcmNhc2lu aDptYXhfZXIgPSAweDMxNzBlMjMyIDEuNTQ1MCwgYXZnX2VyID0gMC4yNTQs ICM+PTE6MC41ID0gMjMwMDg6MzI0NTAyOA0KcmNhdGFuOm1heF9lciA9IDB4 M2M0MDc4ZWMgMS44ODI5LCBhdmdfZXIgPSAwLjI4NCwgIz49MTowLjUgPSAx MzI2MDoxOTA4MzYNCnJjYXRhbmg6bWF4X2VyID0gMHgyY2VmMzE3MSAxLjQw NDIsIGF2Z19lciA9IDAuMTY3LCAjPj0xOjAuNSA9IDQwOTY6NDIwOTE2DQpy Y2xvZzogbWF4X2VyID0gMHgyNTgzMDg1MyAxLjE3MjIsIGF2Z19lciA9IDAu MjQ2LCAjPj0xOjAuNSA9IDEyMDoyNDg5Mg0KcmNzcXJ0Om1heF9lciA9ICAw eGZmZmZhZjAgMC41MDAwLCBhdmdfZXIgPSAwLjI5MiwgIz49MTowLjUgPSAw OjANCnJjY29zOiBtYXhfZXIgPSAweGI3ZjEwNDM5ZjMxMTE2ODYgMjQ2ODgy MDYyODcuNTk1OCwgYXZnX2VyID0gMTQxNS4wMDAsICM+PTE6MC41ID0gMzg4 MTM2NDo0MDQ2NjQ0DQpyY2Nvc2g6bWF4X2VyID0gMHhiN2YxMDQzOWYzMTEx Njg2IDI0Njg4MjA2Mjg3LjU5NTgsIGF2Z19lciA9IDE0MTUuMDAwLCAjPj0x OjAuNSA9IDM4ODEzNjQ6NDA0NjY0NA0KcmNleHA6IG1heF9lciA9IDB4Yjdl MTA0MzlmMzExMTY4NiAyNDY3OTgxNzY3OS41OTU4LCBhdmdfZXIgPSAzMTIu OTA4LCAjPj0xOjAuNSA9IDM4ODQ2ODQ6NDA3ODI1OA0KcmNzaW46IG1heF9l ciA9IDB4YjgwYmYxMWI0MDJlZTkzNCAyNDcwMjMyMjkwNi4wMDU3LCBhdmdf ZXIgPSA4MDcuNTE4LCAjPj0xOjAuNSA9IDM4NDE2NTI6NDExNTUyNA0KcmNz aW5oOm1heF9lciA9IDB4YjdmMTA0MzlmMzExMTY4NiAyNDY4ODIwNjI4Ny41 OTU4LCBhdmdfZXIgPSAxNjkzLjUwOCwgIz49MTowLjUgPSAzODgwODc2OjQz NjgwMDANCnJjdGFuOiBtYXhfZXIgPSAweGI2OGQxYjFjNTE1MWZjYzAgMjQ1 MDE2MDY2MjYuNTQxMywgYXZnX2VyID0gMTYyNy41MzYsICM+PTE6MC41ID0g Mzg5MDkzMjo0MjE0Njk2DQpyY3Rhbmg6bWF4X2VyID0gMHgxMjVlYWQ5YzJl YTg3NWQgMTU0MDk3MzU4LjA5MTEsIGF2Z19lciA9IDE0MTYuNjM1LCAjPj0x OjAuNSA9IDI4OTc1NDA6MzUyMzIwMA0KaWNhY29zOm1heF9lciA9IDB4MzE3 MGUyMzIgMS41NDUwLCBhdmdfZXIgPSAwLjI1NCwgIz49MTowLjUgPSAyMzAw ODozMjQ1MDI4DQppY2Fjb3NoOm1heF9lciA9IDB4NDJjZDE5YzYgMi4wODc1 LCBhdmdfZXIgPSAwLjMxNCwgIz49MTowLjUgPSAzODU0OjIxNTExNg0KaWNh c2luOm1heF9lciA9IDB4MzE3MGUyMzIgMS41NDUwLCBhdmdfZXIgPSAwLjI1 NCwgIz49MTowLjUgPSAyMzAwODozMjQ1MDI4DQppY2FzaW5oOm1heF9lciA9 IDB4NTVhZGMwZGYgMi42Nzc1LCBhdmdfZXIgPSAwLjIwOCwgIz49MTowLjUg PSAzNDMwNDozNTM5ODANCmljYXRhbjptYXhfZXIgPSAweDJjZWYzMTcxIDEu NDA0MiwgYXZnX2VyID0gMC4xNjcsICM+PTE6MC41ID0gNDA5Njo0MjA5MTYN CmljYXRhbmg6bWF4X2VyID0gMHgzYzQwNzhlYyAxLjg4MjksIGF2Z19lciA9 IDAuMjg0LCAjPj0xOjAuNSA9IDEzMjYwOjE5MDgzNg0KaWNsb2c6IG1heF9l ciA9IDB4MWZjMmI0ZjUgMC45OTI1LCBhdmdfZXIgPSAwLjMwMiwgIz49MTow LjUgPSAwOjMzODcxMg0KaWNzcXJ0Om1heF9lciA9ICAweGZmZmZhZjAgMC41 MDAwLCBhdmdfZXIgPSAwLjI5MiwgIz49MTowLjUgPSAwOjANCmljY29zOiBt YXhfZXIgPSAweGI4MGJmMTFiNDAyZWU5MzQgMjQ3MDIzMjI5MDYuMDA1Nywg YXZnX2VyID0gMTQ3Ny4xMjQsICM+PTE6MC41ID0gMzgyNDgzMjo0NDIwMDUy DQppY2Nvc2g6bWF4X2VyID0gMHhiODBiZjExYjQwMmVlOTM0IDI0NzAyMzIy OTA2LjAwNTcsIGF2Z19lciA9IDE0NzcuMTI0LCAjPj0xOjAuNSA9IDM4MjQ4 MzI6NDQyMDA1Mg0KaWNleHA6IG1heF9lciA9IDB4YjdmYmYxMWI0MDJlZTkz NCAyNDY5MzkzNDI5OC4wMDU3LCBhdmdfZXIgPSAxNzM2LjI5OCwgIz49MTow LjUgPSAzODM5MjU2OjQyMTk4NjQNCmljc2luOiBtYXhfZXIgPSAweGI3ZjEw NDM5ZjMxMTE2ODYgMjQ2ODgyMDYyODcuNTk1OCwgYXZnX2VyID0gMTY5My41 MDgsICM+PTE6MC41ID0gMzg4MDg3Njo0MzY4MDAwDQppY3Npbmg6bWF4X2Vy ID0gMHhiODBiZjExYjQwMmVlOTM0IDI0NzAyMzIyOTA2LjAwNTcsIGF2Z19l ciA9IDgwNy41MTgsICM+PTE6MC41ID0gMzg0MTY1Mjo0MTE1NTI0DQppY3Rh bjogbWF4X2VyID0gMHgxMjVlYWQ5YzJlYTg3NWQgMTU0MDk3MzU4LjA5MTEs IGF2Z19lciA9IDE0MTYuNjM1LCAjPj0xOjAuNSA9IDI4OTc1NDA6MzUyMzIw MA0KaWN0YW5oOm1heF9lciA9IDB4YjY4ZDFiMWM1MTUxZmNjMCAyNDUwMTYw NjYyNi41NDEzLCBhdmdfZXIgPSAxNjMyLjUzNiwgIz49MTowLjUgPSAzODkw OTg4OjQyMTQ3NTINCg0KaTM4NiBkb3VibGUgcHJlYywgb24gMioqMTIgeCAy KioxMiBhcmdzOg0KcmNhY29zOm1heF9lciA9ICAgICAweDExZTggMi4yMzgz LCBhdmdfZXIgPSAwLjE2NSwgIz49MTowLjUgPSAyNDg6MTExODUwDQpyY2Fj b3NoOm1heF9lciA9ICAgICAgMHhiMDIgMS4zNzYwLCBhdmdfZXIgPSAwLjI1 NiwgIz49MTowLjUgPSAxMDQ6MjcxNTMxMg0KcmNhc2luOm1heF9lciA9ICAg ICAweDEzY2UgMi40NzU2LCBhdmdfZXIgPSAwLjExMiwgIz49MTowLjUgPSA1 NjE2Ojk1MDYwDQpyY2FzaW5oOm1heF9lciA9ICAgICAgMHhiMDIgMS4zNzYw LCBhdmdfZXIgPSAwLjI1NiwgIz49MTowLjUgPSAxMDQ6MjcxNTMxMg0KcmNh dGFuOm1heF9lciA9ICAgICAgMHg5ZWQgMS4yNDA3LCBhdmdfZXIgPSAwLjAx NSwgIz49MTowLjUgPSA0MDg0OjQ4OTIwDQpyY2F0YW5oOm1heF9lciA9ICAg ICAgMHhiMTcgMS4zODYyLCBhdmdfZXIgPSAwLjAxNCwgIz49MTowLjUgPSA1 Njo3NzQ1Ng0KcmNsb2c6IG1heF9lciA9ICAgICAgMHg3MDQgMC44NzcwLCBh dmdfZXIgPSAwLjI1MCwgIz49MTowLjUgPSAwOjIwMTEyDQpyY3NxcnQ6bWF4 X2VyID0gICAgICAweDdhYSAwLjk1ODAsIGF2Z19lciA9IDAuMzk5LCAjPj0x OjAuNSA9IDA6NDEwNA0KaWNhY29zOm1heF9lciA9ICAgICAgMHhiMDIgMS4z NzYwLCBhdmdfZXIgPSAwLjI1NiwgIz49MTowLjUgPSAxMDQ6MjcxNTMxMg0K aWNhY29zaDptYXhfZXIgPSAgICAgMHgxMWU4IDIuMjM4MywgYXZnX2VyID0g MC4xNjUsICM+PTE6MC41ID0gMjQ4OjExMTg1MA0KaWNhc2luOm1heF9lciA9 ICAgICAgMHhiMDIgMS4zNzYwLCBhdmdfZXIgPSAwLjI1NiwgIz49MTowLjUg PSAxMDQ6MjcxNTMxMg0KaWNhc2luaDptYXhfZXIgPSAgICAgMHgxM2NlIDIu NDc1NiwgYXZnX2VyID0gMC4xMTIsICM+PTE6MC41ID0gNTYxNjo5NTA2MA0K aWNhdGFuOm1heF9lciA9ICAgICAgMHhiMTcgMS4zODYyLCBhdmdfZXIgPSAw LjAxNCwgIz49MTowLjUgPSA1Njo3NzQ1Ng0KaWNhdGFuaDptYXhfZXIgPSAg ICAgIDB4OWVkIDEuMjQwNywgYXZnX2VyID0gMC4wMTUsICM+PTE6MC41ID0g NDA4NDo0ODkyMA0KaWNsb2c6IG1heF9lciA9ICAgICAgMHg2ZjQgMC44Njkx LCBhdmdfZXIgPSAwLjIxMywgIz49MTowLjUgPSAwOjE4MTAzMg0KaWNzcXJ0 Om1heF9lciA9ICAgICAgMHg0MDAgMC41MDAwLCBhdmdfZXIgPSAwLjM5OSwg Iz49MTowLjUgPSAwOjQwMjYNCg0Kc3BhcmM2NCBkb3VibGUgcHJlYywgb24g MioqMTIgeCAyKioxMiBhcmdzOg0KcmNhY29zOm1heF9lciA9ICAgICAweDM2 YjUgMy40MTkyLCBhdmdfZXIgPSAwLjIyOCwgIz49MTowLjUgPSAyMzk0OjEy NTk4NA0KcmNhY29zaDptYXhfZXIgPSAgICAgMHgxZjE1IDEuOTQyNiwgYXZn X2VyID0gMC4yNTgsICM+PTE6MC41ID0gODQ2NDoyNzM3ODMyDQpyY2FzaW46 bWF4X2VyID0gICAgIDB4MmI4YyAyLjcyMTcsIGF2Z19lciA9IDAuMTEzLCAj Pj0xOjAuNSA9IDMzMjk2Ojk5MTQ4DQpyY2FzaW5oOm1heF9lciA9ICAgICAw eDFmMTUgMS45NDI2LCBhdmdfZXIgPSAwLjI1OCwgIz49MTowLjUgPSA4NDY0 OjI3Mzc4MDANCnJjYXRhbjptYXhfZXIgPSAgICAgMHgyYzQ2IDIuNzY3MSwg YXZnX2VyID0gMC4yMTIsICM+PTE6MC41ID0gNDY4MDo4MTM2NA0KcmNhdGFu aDptYXhfZXIgPSAgICAgMHgyOTcwIDIuNTg5OCwgYXZnX2VyID0gMC4wNDcs ICM+PTE6MC41ID0gMTI5NDUyOjY5MTM1Ng0KcmNsb2c6IG1heF9lciA9ICAg ICAgMHhlMDkgMC44NzcyLCBhdmdfZXIgPSAwLjI1MCwgIz49MTowLjUgPSAw OjE4MzQ4DQo= --0-286592833-1344892468=:4897--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120814055931.Q4897>