[metapost] Strange result for angle() in MP 1.750
Dan Luecking
luecking at uark.edu
Tue Dec 6 18:43:47 CET 2011
In metapost version 1.750 (just downloaded off SupelectFoundry):
*show angle (up);
gives me
>> 1440
This is not only an incorrect angle (dir 1440 = right),
but not in the documented range of -180 to 180.
Version 1.504 correctly produces 90.
Here is some more lunacy regarding angle():
*show angle (.3,1);
>> 1172.80957
*show angle (.5,1);
>> 1014.95923
*show angle (1,.8);
>> 618.55861
*show angle (1,.6);
>> 495.4242
*show angle (1,.4);
>> 348.81773
*show angle (1,.2);
>> 180.9562
*show angle (1,.1);
>> 91.375
*show angle (1,0);
>> 0
(The last one shows only that even an incorrect calculation
can occasionally produce a correct answer.)
These numbers appear to all be off by a factor of 16,
suggesting the bug is a simple oversight in the implementation
of Knuth's algorithm. His algorithm treats angles internally
as integer multiples of 2^{-20}, making them 16 times the
usual numerics which are integer multiples of 2^{-16}.
Regards,
Dan
Daniel H. Luecking
Department of Mathematical Sciences
Fayetteville, Arkansas
http://www-cs-faculty.stanford.edu/~knuth/iaq.html
More information about the metapost
mailing list