[metapost] arclength() tolerances

Franck Pastor franck.pastor at mac.com
Thu Apr 10 09:06:17 CEST 2014

Le 3 avr. 2014 à 10:32, Taco Hoekwater <taco at elvenkind.com> a écrit :

> Hi Hartmut,
> On 02 Apr 2014, at 21:10, Hartmut Henkel <hartmut_henkel at gmx.de> wrote:
>> Hi,
>> in metapost there seem to be absolute tolerance values for iterative
>> algorithms like arclength() even in the double numbersystem:
> Yes, the arc_test() routine (the core or arclength/arctime) uses a predefined 
> tolerance of unity/4096. While it is clear to me why it needs a tolerance
> setting, it is not clear why that precise value, nor does lowering it actually
> help, it just makes mp run slower:
> With tolerance=1E-8:
> 0.031477030364784685, 31415.995269569834
> real	0m1.606s
> user	0m1.601s
> sys	0m0.003s
> With tolerance=1E-9:
> 0.031477030364784685, 31415.995269569834
> real	1m40.888s
> user	1m40.820s
> sys	0m0.034s
> Maybe there is some intrinsic error in the approximation code? One of the
> more important reasons why I will quit developing metapost is that I do not 
> really understand any of this computational stuff, nor can I easily grasp the
> theory behind it when attempting to educate myself.
> Best wishes,
> Taco

About arclength, I remembered having read something about it somewhere, but couldn't find it until just now. It was in a TUG article written by the Asymptote authors: http://www.math.ualberta.ca/~bowman/publications/asyTUG.pdf

p. 289: "Robust arc length and arc time computations were implemented with adaptive Simpson integration, which was determined to be more efficient than Bézier subdivision."

Maybe the Simpson integration should be the way to go? (Don't know enough about this subject to judge about it.)

Best regards,

Franck Pastor

More information about the metapost mailing list