diff options
author | Karl Berry <karl@freefriends.org> | 2018-04-03 22:35:04 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-04-03 22:35:04 +0000 |
commit | 36b8d1341af4a7ab1f5759d75ad1eecfc375c1f4 (patch) | |
tree | 12d09b686d2c18f245dc6fd492c09cdcd4c02ebc /Build | |
parent | d73e029b665b866fe734e44508746a2cba513fd7 (diff) |
asy 2.42 sources
git-svn-id: svn://tug.org/texlive/trunk@47274 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
72 files changed, 6918 insertions, 5184 deletions
diff --git a/Build/source/utils/README b/Build/source/utils/README index fbc2273a6de..a544f31a4c8 100644 --- a/Build/source/utils/README +++ b/Build/source/utils/README @@ -5,7 +5,7 @@ Extra utilities we (optionally) compile for TeX Live. See comments in ../texk/README. -asymptote 2.41 - checked 23mar17 +asymptote 2.42 - checked 4apr18 update to TL from CTAN, to include prebuilt doc. see http://tug.org/texlive/build.html#asymptote and tlpkg/bin/tl-update-asy diff --git a/Build/source/utils/asymptote/ChangeLog b/Build/source/utils/asymptote/ChangeLog index d443c3a47ae..5d3a7d7fc94 100644 --- a/Build/source/utils/asymptote/ChangeLog +++ b/Build/source/utils/asymptote/ChangeLog @@ -1,3 +1,360 @@ +commit 4d0f6ba1b9c6ea2609b145f42ec9a39023e60706 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Apr 3 00:12:12 2018 -0600 + + Revert to centroid depth sorting of transparent triangles until splitting code is complete. + +commit 355b585791bba490a8c0847dc104ef3504180353 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 23:44:04 2018 -0600 + + Revert to nativeformat EPS for MSWindows. + +commit ab9623e7777ff1e85f72f326b6ad9771f84290af +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 23:37:05 2018 -0600 + + Fix ode integrator output. + +commit 440a4e23f492556b6671ad713c92507c4da91d94 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 23:31:44 2018 -0600 + + Add implementation of rational arithmetic. + +commit fb83e1d71bad988d081d308dc9a9d1f385871bdc +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 23:20:23 2018 -0600 + + Improve missing texi2vi workaround. + +commit f10affaa88f9680576f541ff351a3996e502a135 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 22:49:03 2018 -0600 + + Specify current directory. + +commit d8d976aee0234524ab5794a75d61f9ea9c9e6d72 +Merge: dc276c11 67b844ae +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 21:42:51 2018 -0600 + + Merge branch 'master' of github.com:vectorgraphics/asymptote + +commit dc276c116e40ef1e485fa456d75d26411d6ac1f4 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 21:36:48 2018 -0600 + + Check for feenableexcept. + +commit 67b844aecc03a4b08ff8e9a8152d7cf324b4db22 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 21:36:48 2018 -0600 + + Check for feenableexcept. + +commit 13d9a1ec1cf6f6f1478cc4f590f728b0f0561725 +Merge: edf06016 bed300cc +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 21:14:51 2018 -0600 + + Merge pull request #54 from ivankokan/perpendicularmark + + Properly implemented "square + pen" semantics within perpendicularmark + +commit edf060165f9014d9aeb23673bf214b5e7b983049 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 20:54:44 2018 -0600 + + Fix transparent depth test. + +commit d75d007c08b19787bc59b3efad1337f18b8a1bde +Merge: e0dba9d6 6ce2d6f6 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 13:31:16 2018 -0600 + + Merge branch 'master' of github.com:vectorgraphics/asymptote + +commit e0dba9d6b5b00154d08c4eec793ab7cffba96cce +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Apr 2 13:30:59 2018 -0600 + + Fix missing 3D underline. + +commit 6ce2d6f6c07e0492a222ec22a78bf7c60f75fd96 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Mar 28 17:46:50 2018 -0600 + + Fix issue #62 (invalid string acces). + +commit afd2d56d1a74a9fbd27c93f79a48947fe33bfd94 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Mar 24 17:05:23 2018 -0600 + + Force make clean to clear symbols. + +commit fc0cc036f6b3733fba8b43bf5068b009fddb6bdc +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Feb 16 12:33:25 2018 -0700 + + Improve diagnostic. + +commit 63b2310edefaef37192f596a2b6cfd97d5ce60d1 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 19 20:18:17 2018 -0700 + + Inline call to intbits(). + +commit 5f5a678fcb4d40fe312c511eb32189c410269a73 +Merge: c2ca99da e9906f89 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 19 01:06:50 2018 -0700 + + Merge branch 'master' of github.com:vectorgraphics/asymptote + +commit c2ca99da1f5587e077cd0e7c367b49d5eae7a172 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 19 01:05:11 2018 -0700 + + Fix asymmetry in angle(transform t), so that angle(yscale(-1))=0. + +commit 9bdc5755535489b81c6fea146aa60463de9cbcc3 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 12 15:56:37 2018 -0700 + + Fix path. + +commit e9906f89fe021471c9f7d7bd375c823ee0ea45d9 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 12 15:56:37 2018 -0700 + + Fix path. + +commit f9cd516793b5d98aba083f2ef79891ccb2319adf +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 12 15:43:28 2018 -0700 + + Rename directory. + +commit b0ba7e598eae625ec5d57a214682fe41907c2500 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 12 15:40:58 2018 -0700 + + Fix typo. + +commit a8b346777b7404c480c7f9aa144239ef11288164 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 12 15:39:04 2018 -0700 + + Fix HOWTO-MSWindows maintainer documentation. + +commit bb3eb235fd4da44f56f1eb563ff6c65f48a22606 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 12 15:38:15 2018 -0700 + + Update HOWTO-MSWindows maintainer documentation. + +commit d069591eb886db59bf1bf764b3916e6b907cafd4 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 12 15:22:10 2018 -0700 + + Add maintainer build scripts. + +commit 1e1e6cbbcfe65b58ead8e04d5e2b302ed011acd8 +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Jan 11 14:00:22 2018 -0700 + + Fix integer division bug (due to overflow). + +commit 0d172a96ebb5d0c11679dd98af0fa542ff2211b3 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jan 9 09:51:04 2018 -0700 + + Make nativeformat PDF under MSWindows. + +commit 127affbfc8938f5a7ac835d8f7fb59797b852cb0 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jan 9 09:28:25 2018 -0700 + + Build 64-bit MSWindows binaries. + +commit eff28605bf5844b3570f43ad4264446c75b1e78c +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 5 15:27:07 2018 -0700 + + Workaround broken CYGWIN xdr headers. + +commit bed300ccb079c06c66eee8ff4dd38d4e522bf027 +Author: ivankokan <ivan.kokan@gmail.com> +Date: Fri Jan 5 18:55:49 2018 +0100 + + perpendicularmark: properly implemented "square + pen" semantics + +commit 952dec232e3ea77e820297f38f338fab360186fd +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Jan 5 09:02:49 2018 -0700 + + Update Boehm garbage collector. + +commit 715c523b3019a59259c48a0b7f9852ce17b6128a +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Jan 4 22:30:21 2018 -0700 + + Update CYGWIN port for 64-bit build. + +commit 005aef0a8c45c8625910363e1159fedcd9fa31b6 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Dec 18 14:51:43 2017 -0700 + + Fix segmentation fault. + +commit f791e93a9d258f03d4cf218f19772c91df4b8b35 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Dec 8 00:07:19 2017 -0700 + + Make Bitreverse array static. + +commit 2f76e4922df68ca7f5c625637cde3d8b6de00801 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Dec 5 00:30:03 2017 -0700 + + Update documentation. + +commit 4d8d83abb664f21e941ded491fe9c99ed605d4a8 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Dec 4 21:47:35 2017 -0700 + + Make CLZ(0) return width of int type. + +commit 732551d1071b8e660fd44974002b5c0fb4dde574 +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Dec 3 11:21:39 2017 -0700 + + Extend bitreverse and CLZ to long long integers. + +commit 6dfcb97eb80d384371cbba095ce5e0289ff649f5 +Merge: 5709f8fc 1e314cf9 +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Nov 23 15:33:58 2017 -0700 + + Merge branch 'master' of github.com:vectorgraphics/asymptote + +commit 5709f8fc6f1800de36d50e636332355a71d924ba +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Nov 23 15:21:55 2017 -0700 + + Add forcemath option to format for typesetting within an existing math mode. + +commit 1e314cf9b58e60b3a4b0fa930d5fe69e3e78653d +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Nov 18 11:13:21 2017 -0700 + + Remove extraneous declaration. + +commit 07604b6d32201acbb236b254240f66da167e1a49 +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Nov 16 20:32:08 2017 -0700 + + Port to latest CYGWIN. + +commit bdb0c70c984316552298396d0ec75f7b1c40a971 +Merge: 9db9467d 51ababda +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Nov 3 13:33:10 2017 -0600 + + Merge branch 'master' of github.com:vectorgraphics/asymptote + +commit 9db9467d4cc2c7cc2b1b09b2f9bda4ae85a7b188 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Nov 3 13:25:07 2017 -0600 + + Implement 32-bit bit reverse. + +commit 51ababdae0bb1b3b94e87bd4a005af6f4d417b59 +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Oct 26 09:09:57 2017 -0600 + + Fix offscreen rendering initialization. + +commit 4e391ced23627e0ba9a318485f20c58d99545f27 +Author: prramazi <p.ramazi@gmail.com> +Date: Fri Oct 13 17:08:45 2017 -0600 + + Fix int type. + +commit febfdec12079aa673d8f0c66580529c208f3cedb +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Oct 11 11:20:53 2017 -0600 + + Fix gitignore. + +commit 41e6e15d4313c7ba02d947ff33d74238304c7033 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Sep 29 14:00:58 2017 -0600 + + Correct comment. + +commit fa3de734be166afe63d0d47cdf546932f7531a5a +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Sep 29 11:39:07 2017 -0600 + + Implement string[] array(string s) and string operator +(...string[] a). + +commit 41d41c503c4119638baf7480c189149f6c244628 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Sep 27 16:47:24 2017 -0600 + + Add operator <>. + +commit 21f5e431ff233c8af387e305301f12cfd235c636 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Sep 25 17:14:37 2017 -0600 + + Implement int popcount(int) and use it to build a 64-bit int CTZ(int). + +commit 66fc685efa9a161b70e67c9f319d9030b2d2eea9 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Sep 22 15:20:17 2017 -0600 + + Implement findall. + +commit f7231be3e560fa40f43e298e4b69b5c03ca0a141 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Aug 18 14:31:44 2017 -0600 + + Remove redundant vbox. + +commit 84f4ea3ff0a564698282af8eeb1afae14907e2fe +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Aug 4 15:33:03 2017 -0600 + + Improve equation support in module slide. + +commit 1b9692fae4a4f7bd58ea09f37178f7ed598f277d +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 13 15:40:12 2017 -0600 + + Simplify example. + +commit 467e7c47c96da5c28aca1713b02bcecf75e7e166 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Jun 13 15:38:54 2017 -0600 + + Remove broken empty flag. + +commit 5ec14a9d6f1f507b616db450896a7f275dd7ff3c +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Apr 6 11:01:23 2017 -0600 + + Work around quote mangling bug when viewing asymptote.pdf in certain PDF + readers. + +commit 45f532f7b10565f05ff82c6f7b6833ef33a20712 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Mar 22 02:29:15 2017 -0600 + + Increment version to 2.42. + commit 40f27e1424f6c63aa362f16f3c65b9f3d1d6e723 Author: John Bowman <bowman@ualberta.ca> Date: Wed Mar 22 01:56:17 2017 -0600 @@ -31,7 +388,7 @@ Date: Mon Mar 20 23:05:31 2017 -0600 Remove temporary pbsdat file. commit dacbf47554b36d0571394b3c4d747405e53f2708 -Merge: f34a52d c2e4bd5 +Merge: f34a52df c2e4bd59 Author: John Bowman <bowman@ualberta.ca> Date: Fri Mar 17 01:48:29 2017 -0600 @@ -380,7 +737,7 @@ Date: Sat Jan 21 16:59:00 2017 -0700 Reinstate patch outline mode. commit a96ffbbfba55fc69b27b1c6052545bbf99ee23f8 -Merge: 0be6f55 16ae9ee +Merge: 0be6f556 16ae9ee4 Author: John Bowman <bowman@ualberta.ca> Date: Sat Jan 21 15:45:27 2017 -0700 @@ -635,7 +992,7 @@ Date: Sat Jun 4 20:00:48 2016 -0600 Fix typo. commit 7ecaf8f43931d728eaf4154092cefaa4d0d0c201 -Merge: 692051a 154c47b +Merge: 692051a2 154c47b6 Author: John Bowman <bowman@ualberta.ca> Date: Thu Jun 2 23:11:58 2016 -0600 @@ -781,7 +1138,7 @@ Date: Fri May 6 20:49:46 2016 -0600 Pass CC and CXX to gc configure. commit a40b6c087091bdc15ffe44d00c51ca15cb1d4877 -Merge: 656cf97 0f1f6d1 +Merge: 656cf976 0f1f6d1c Author: John Bowman <bowman@ualberta.ca> Date: Fri May 6 09:45:34 2016 -0600 @@ -858,7 +1215,7 @@ Date: Sat Mar 12 21:26:01 2016 -0700 Add progress function. commit bcbf941fdd0fa9db5c3b77d7a3477fa358a291ac -Merge: 97f3b6c ae0af70 +Merge: 97f3b6c3 ae0af708 Author: John Bowman <bowman@ualberta.ca> Date: Sun Mar 6 22:33:57 2016 -0700 @@ -877,7 +1234,7 @@ Date: Sun Mar 6 21:12:26 2016 -0700 Look for kpsewhich first in the same directory as the asy executable. commit ae0af708d12981318936697c7c289fe71723dabe -Merge: 815b738 6fc23e0 +Merge: 815b7381 6fc23e01 Author: Charles Staats III <charles.staats.iii@gmail.com> Date: Sun Mar 6 20:07:38 2016 -0800 @@ -909,14 +1266,14 @@ Date: Sun Mar 6 14:20:31 2016 -0700 Add EPSWRITE compiler flag to support ghostscript versions older than 9.14. commit cbb7e37c1a8ed7168bdfb61b5c48ef775b9dd668 -Merge: 9004183 6c1ad05 +Merge: 90041839 6c1ad05b Author: John Bowman <bowman@ualberta.ca> Date: Sun Mar 6 10:04:21 2016 -0700 Merge branch 'trianglewithnormals' commit 900418390224e6f56ed33a5df55c0b47e418e1f0 -Merge: ce19f61 9a36fe8 +Merge: ce19f613 9a36fe85 Author: John Bowman <bowman@ualberta.ca> Date: Sun Mar 6 09:45:19 2016 -0700 @@ -977,7 +1334,7 @@ Date: Sun Feb 28 19:27:19 2016 -0800 Change adaptive rendering constant for bezier triangles. commit fc81a2ed70019cca10eed52b2caa3bff713d0d7f -Merge: cd9f875 e78de7f +Merge: cd9f8755 e78de7f9 Author: Charles Staats III <charles.staats.iii@gmail.com> Date: Sun Feb 28 19:23:17 2016 -0800 @@ -1015,7 +1372,7 @@ Date: Tue Feb 23 19:00:20 2016 -0700 Fix bug #219 Asymptote forks in an uncontrolled way. commit cd9f8755715b8ce7e5b239ecd77fdff4d336411a -Merge: e6454cb 344698e +Merge: e6454cb2 344698e2 Author: John Bowman <bowman@ualberta.ca> Date: Tue Feb 16 17:41:59 2016 -0700 @@ -1028,7 +1385,7 @@ Date: Tue Feb 16 17:41:21 2016 -0700 Fix epsilon. commit e6454cb2370e412699d467f451519ab89efd3f40 -Merge: e5394af 75ce996 +Merge: e5394afc 75ce9969 Author: John Bowman <bowman@ualberta.ca> Date: Tue Feb 16 17:29:10 2016 -0700 @@ -1169,14 +1526,14 @@ Date: Fri Feb 5 17:47:36 2016 -0700 Simplify code. commit b2d975013dfec4c2163b66286eacb8e6b9a71b56 -Merge: a2dc301 ce719eb +Merge: a2dc3010 ce719ebe Author: Charles Staats III <charles.staats.iii@gmail.com> Date: Fri Feb 5 08:34:14 2016 -0800 Merge branch 'trianglewithnormals' of github.com:vectorgraphics/asymptote into trianglewithnormals commit ce719ebe712ae40a4fd31dc5e59b6c1f382cdfca -Merge: 30d63a3 9b9e8f5 +Merge: 30d63a35 9b9e8f57 Author: John Bowman <bowman@ualberta.ca> Date: Thu Feb 4 23:18:11 2016 -0700 @@ -1189,7 +1546,7 @@ Date: Thu Feb 4 23:05:28 2016 -0700 Simplify code. commit ab2042f994b6dd71c204ddaa59124b7f3644ee58 -Merge: 5d97e7d a873617 +Merge: 5d97e7d7 a873617b Author: John Bowman <bowman@ualberta.ca> Date: Thu Feb 4 23:03:06 2016 -0700 @@ -1208,7 +1565,7 @@ Date: Thu Feb 4 21:31:58 2016 -0800 Amend one comment. commit 8ec9865cc3fd4bc2cbded6e754ad4670e1920730 -Merge: 6ca1083 a873617 +Merge: 6ca10836 a873617b Author: Charles Staats III <charles.staats.iii@gmail.com> Date: Thu Feb 4 21:20:20 2016 -0800 @@ -1239,7 +1596,7 @@ Date: Thu Feb 4 13:24:27 2016 -0700 Fix planar Bezier triangles under render=0. commit 64e1d1ad3777e898febba132ac0aae152882c52d -Merge: 03a2310 29806bc +Merge: 03a2310b 29806bc7 Author: John Bowman <bowman@ualberta.ca> Date: Thu Feb 4 01:37:46 2016 -0700 @@ -1538,7 +1895,7 @@ Date: Fri Jan 29 01:24:36 2016 -0700 Fix bug in rest argument signature equivalence. commit e59d44b1f641743f7eea53b18286f8ae71f7ad42 -Merge: 3fcb882 d70ce12 +Merge: 3fcb8827 d70ce121 Author: John Bowman <bowman@ualberta.ca> Date: Fri Jan 29 00:58:56 2016 -0700 @@ -1551,7 +1908,7 @@ Date: Fri Jan 29 00:57:41 2016 -0700 Implement Bezier triangle vertex shading; simplify notation. commit d70ce12140bcee8f60cf4b14d86345ea1a597d24 -Merge: 9a85929 4cca8cb +Merge: 9a859296 4cca8cba Author: John Bowman <bowman@ualberta.ca> Date: Thu Jan 28 19:45:53 2016 -0700 @@ -1560,7 +1917,7 @@ Date: Thu Jan 28 19:45:53 2016 -0700 Fix package format commit 9a85929623975d23856c6462efaf66c1b645337e -Merge: fec79bd daa7b97 +Merge: fec79bd9 daa7b97d Author: John Bowman <bowman@ualberta.ca> Date: Thu Jan 28 19:45:10 2016 -0700 @@ -1577,7 +1934,7 @@ Date: Fri Jan 29 14:21:18 2016 +1300 Using the work "Emacs" is redundant here. Better to describe this as what it is: a major mode. commit fec79bd94f87e1532ab8f90c46ebeffa8ef68a34 -Merge: af459e8 799d62d +Merge: af459e8a 799d62d7 Author: John Bowman <bowman@ualberta.ca> Date: Thu Jan 28 18:06:22 2016 -0700 @@ -1611,7 +1968,7 @@ Date: Wed Jan 27 08:22:51 2016 -0700 Rename NaN to more standard nan, consistent with inf. commit 40222e2f183510bbc3e7642ab58abaae107837d7 -Merge: 6d148e9 e6a9c8c +Merge: 6d148e9d e6a9c8c3 Author: John Bowman <bowman@ualberta.ca> Date: Wed Jan 27 01:44:30 2016 -0700 @@ -1620,14 +1977,14 @@ Date: Wed Jan 27 01:44:30 2016 -0700 Fix asy-mode.el headers for use with package.el commit 6d148e9d4cb76e7a62b38cd7917f13f7e6b14241 -Merge: 120804c b4f5fd7 +Merge: 120804c1 b4f5fd7f Author: John Bowman <bowman@ualberta.ca> Date: Wed Jan 27 01:32:44 2016 -0700 Merge branch 'tpatch' commit 120804c135338ad70ed74c37f6391cf2bd31143b -Merge: eeb634e dda2736 +Merge: eeb634e5 dda2736d Author: John Bowman <bowman@ualberta.ca> Date: Wed Jan 27 01:32:37 2016 -0700 @@ -1640,21 +1997,21 @@ Date: Wed Jan 27 01:32:11 2016 -0700 Remove obsolete comment. commit dda2736d7adc54b42fb063ad04d9818c4dac1cad -Merge: e86faf9 37a3036 +Merge: e86faf9a 37a30365 Author: John Bowman <bowman@ualberta.ca> Date: Wed Jan 27 01:28:31 2016 -0700 Merge branch 'master' of github.com:vectorgraphics/asymptote commit e86faf9a90abe8546db543ba1decb3db4709a7af -Merge: 4243c5a bb9a29b +Merge: 4243c5af bb9a29b0 Author: John Bowman <bowman@ualberta.ca> Date: Wed Jan 27 01:28:01 2016 -0700 Merge branch 'NaNconstant' commit 4abd683e6bcf1c03254a05d0f80dac2da49b796e -Merge: 62f540f eeb634e +Merge: 62f540f3 eeb634e5 Author: John Bowman <bowman@ualberta.ca> Date: Wed Jan 27 00:53:10 2016 -0700 @@ -1766,7 +2123,7 @@ Date: Mon Dec 7 00:42:20 2015 -0700 Define PERL. commit 2292b4e20cec169b8e49ffd90c266fe0c481280c -Merge: 83d8788 2f0e11d +Merge: 83d8788e 2f0e11d1 Author: John Bowman <bowman@ualberta.ca> Date: Sat Dec 5 11:59:38 2015 -0700 @@ -1815,7 +2172,7 @@ Date: Mon Nov 16 00:00:44 2015 -0700 Fix Bezier triangle bounds calculation. commit 78c5a4dc967871262371bc09a752c4f7c3a0982e -Merge: 3bdb0da 71ff9e7 +Merge: 3bdb0da5 71ff9e76 Author: John Bowman <bowman@ualberta.ca> Date: Sun Nov 15 11:47:01 2015 -0700 @@ -1828,7 +2185,7 @@ Date: Sat Nov 14 01:25:56 2015 -0700 Support GSL 2.0. commit 3bdb0da5d7762bdc3509cbbd3aadfea392065729 -Merge: 342bd39 d7d0920 +Merge: 342bd39a d7d0920c Author: John Bowman <bowman@ualberta.ca> Date: Fri Nov 13 15:22:31 2015 -0700 @@ -1906,7 +2263,7 @@ Date: Thu Aug 27 14:49:08 2015 -0600 aligns better with the symmetry and (seems to) avoid degeneracies. commit 9607b89ce3b1dd6f41905b3ca7225304a78a4236 -Merge: b186e65 e660681 +Merge: b186e65a e660681e Author: Jesse Frohlich <jesse.frohlich@ualberta.ca> Date: Tue Aug 18 10:56:13 2015 -0600 @@ -1990,7 +2347,7 @@ Date: Thu Aug 6 18:03:19 2015 -0600 Condense code. commit afc9bb50d32bc30a60e8ec14130f459ee3d07324 -Merge: 8311561 6d64099 +Merge: 83115611 6d640996 Author: John Bowman <bowman@ualberta.ca> Date: Thu Aug 6 16:59:34 2015 -0600 @@ -2019,14 +2376,14 @@ Date: Thu Aug 6 15:40:24 2015 -0600 Simplify code. commit 9a719d5a367ea6bb04ccc7d43d1b9d9ef8461ccf -Merge: 10b58e6 6d64099 +Merge: 10b58e6f 6d640996 Author: John Bowman <bowman@ualberta.ca> Date: Thu Aug 6 15:03:39 2015 -0600 Merge branch 'master' into tpatch. Conflicts: - configure.ac + configure.ac commit 10b58e6fb9c66b725c78afa5b18c356deeaa5d70 Author: Jesse Frohlich <jesse.frohlich@ualberta.ca> @@ -2073,7 +2430,7 @@ Date: Wed Aug 5 12:39:15 2015 -0600 Update to latest beziertriangle.cc. commit f27143b2c09b588397d2a357b6663f9872ab1526 -Merge: ce5d022 8f3274d +Merge: ce5d022f 8f3274d4 Author: Jesse Frohlich <jesse.frohlich@ualberta.ca> Date: Wed Aug 5 12:35:30 2015 -0600 @@ -2088,7 +2445,7 @@ Date: Wed Aug 5 12:27:33 2015 -0600 The implementation for Bezier triangles now compiles. commit 8f3274d4b9fea2c5afbce309019779c71874f387 -Merge: 6510a21 b1041ff +Merge: 6510a213 b1041ff1 Author: John Bowman <bowman@ualberta.ca> Date: Wed Aug 5 12:20:34 2015 -0600 @@ -2107,14 +2464,14 @@ Date: Wed Aug 5 12:18:11 2015 -0600 Add example. commit 0c9443bed41f84d8c38deac9df0be0c62474ebf4 -Merge: 6510a21 421cd19 +Merge: 6510a213 421cd19d Author: Jesse Frohlich <jesse.frohlich@ualberta.ca> Date: Wed Aug 5 10:28:02 2015 -0600 Merge changes in master branch to tpatch. commit 421cd19d01577dab0f3b92d89eaf1e1edf6487c2 -Merge: ecae5ee 94fb5fb +Merge: ecae5ee6 94fb5fb6 Author: John Bowman <bowman@ualberta.ca> Date: Tue Aug 4 18:01:02 2015 -0600 @@ -2133,7 +2490,7 @@ Date: Tue Aug 4 17:54:37 2015 -0600 Update INSTALL. commit 94fb5fb6792662366f0d0d9587bb2504a71c77bd -Merge: 2cb41a4 86920eb +Merge: 2cb41a4e 86920ebf Author: johncbowman <bowman@ualberta.ca> Date: Tue Aug 4 17:14:19 2015 -0600 @@ -2170,7 +2527,7 @@ Author: John Bowman <bowman@ualberta.ca> Date: Sat Aug 1 20:35:58 2015 -0600 Update documentation for git. - # doc/png/LaTeX-usage.html + # doc/png/LaTeX-usage.html commit ce373e1267e1980aca6aefd86822c7daf92cc6d8 Author: Jesse Frohlich <jesse.frohlich@ualberta.ca> @@ -32280,7 +32637,7 @@ Date: Mon Nov 7 23:26:21 2005 -0600 Remaining import updates. commit 14735e983987b664738f9bbab29953a6cdeafd7d -Merge: 0b62f70 9710028 +Merge: 0b62f703 9710028a Author: Andy Hammerlindl <ahammerlindl@gmail.com> Date: Mon Nov 7 10:57:39 2005 -0600 diff --git a/Build/source/utils/asymptote/Makefile.in b/Build/source/utils/asymptote/Makefile.in index cf957118da4..6db876faf62 100644 --- a/Build/source/utils/asymptote/Makefile.in +++ b/Build/source/utils/asymptote/Makefile.in @@ -45,13 +45,14 @@ COREFILES = $(CAMP) $(SYMBOL_FILES) env genv stm dec errormsg \ FILES = $(COREFILES) main +SYMBOLSH = opsymbols.h allsymbols.h DIST = camp.tab.h camp.tab.cc lex.yy.cc runtime.cc keywords.cc \ asy-keywords.el $(RUNTIME_FILES:=.cc) $(RUNTIME_FILES:=.h) asy.list \ - allsymbols.h opsymbols.h $(SYMBOL_FILES:=.symbols.h) + $(SYMBOLSH) $(SYMBOL_FILES:=.symbols.h) NAME = asy XNAME = x$(NAME) CLEAN = camp.output base/version.asy doc/version.texi \ - GUI/xasyVersion.py $(XNAME) doc/asy-latex.pdf + GUI/xasyVersion.py $(XNAME) doc/asy-latex.pdf $(SYMBOLSH) EXTRA = asy-mode.el asy-init.el asy.vim asy_filetype.vim asy-kate.sh \ asymptote.py reload.js nopapersize.ps EXEXTRA = piicon.eps *.views *.dat *.bib @@ -193,7 +194,7 @@ allsymbols.h: findsym.pl $(SYMBOL_FILES:=.cc) $(CXX) -E -DNOSYM $(OPTS) $(INCL) $(SYMBOL_FILES:=.cc) | \ $(PERL) ./findsym.pl $@ - -symbol.o: opsymbols.h allsymbols.h +symbol.o: $(SYMBOLSH) camp.tab.cc: camp.y $(BISON) -dvt -b camp camp.y && mv camp.tab.c camp.tab.cc diff --git a/Build/source/utils/asymptote/ReleaseNotes b/Build/source/utils/asymptote/ReleaseNotes index ce52857bf1e..f4d9662efda 100644 --- a/Build/source/utils/asymptote/ReleaseNotes +++ b/Build/source/utils/asymptote/ReleaseNotes @@ -1,3 +1,10 @@ +Release Notes for Version 2.42 + +Bitreverse and popcount functions were added. An overflow in the modulo +operator was fixed. An asymmetry in angle(transform t) was fixed so that +angle(yscale(-1))=0. Missing 3D underline characters were fixed. +The MSWindows binary is now 64-bit. + Release Notes for Version 2.41 The rendering of Bezier patches was improved. Minor improvements were made diff --git a/Build/source/utils/asymptote/asy-keywords.el b/Build/source/utils/asymptote/asy-keywords.el index 56394f9ec67..46071332287 100644 --- a/Build/source/utils/asymptote/asy-keywords.el +++ b/Build/source/utils/asymptote/asy-keywords.el @@ -2,16 +2,16 @@ ;; This file is automatically generated by asy-list.pl. ;; Changes will be overwritten. ;; -(defvar asy-keywords-version "2.41") +(defvar asy-keywords-version "2.42") (defvar asy-keyword-name '( and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator )) (defvar asy-type-name '( -Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola indexedTransform int inversion key light line linefit marginT marker mass object pair parabola patch path path3 pen picture point position positionedvector projection real revolution scaleT scientific segment side slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void )) +Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola indexedTransform int inversion key light line linefit marginT marker mass object pair parabola patch path path3 pen picture point position positionedvector projection rational real revolution scaleT scientific segment side slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void )) (defvar asy-function-name '( -AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPRCcylinder drawPRCdisk drawPRCsphere drawPRCtube drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endScript endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalout normalvideo nosetpagesize notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans )) +AND Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPRCcylinder drawPRCdisk drawPRCsphere drawPRCtube drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endScript endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalout normalvideo nosetpagesize notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocentercenter outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans )) (defvar asy-variable-name '( -AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange ZHIGH ZLOW addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize black blue bm bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator diagnostics differentlengths dot dotfactor dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity4 ignore inXasyMode inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings shipped signedtrailingzero solid spinner springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize vline white wye xformStack yellow ylabelwidth zerotickfuzz zerowinding )) +AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange ZHIGH ZLOW aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize black blue bm bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator diagnostics differentlengths dot dotfactor dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity4 ignore inXasyMode inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings shipped signedtrailingzero solid spinner springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize vline white wye xformStack yellow ylabelwidth zerotickfuzz zerowinding )) diff --git a/Build/source/utils/asymptote/asy.list b/Build/source/utils/asymptote/asy.list index fbeeb675b80..dd53b3df0a5 100644 --- a/Build/source/utils/asymptote/asy.list +++ b/Build/source/utils/asymptote/asy.list @@ -6,6 +6,7 @@ light currentlight; pen royalblue; real arrowdir; filltype filltype(int type=<default>, pen fillpen=<default>, pen drawpen=<default>, void fill2(frame f, path[] g, pen fillpen)); +void addArrow(picture pic, arrowhead arrowhead, path g, pen p, real size, real angle, filltype filltype, real position); int Suppress; align NoAlign; filltype RadialShade(pen penc, pen penr); @@ -33,6 +34,7 @@ frame[] fit2(picture[] pictures, picture all); void addSaveFunction(void s()()); pen olive; pen zerowinding; +frame pack(pair align=<default> ... object[] inset); pen deepmagenta; path[] margin(path[] g, real xmargin, real ymargin); string file(string s); @@ -42,6 +44,8 @@ slice lastcut(path p, path knife); pen darkgreen; string verbatim(string s); pen heavygray; +bool ArcArrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>); +bool ArcArrows(picture, path, pen, marginT(path, pen)); pen darkred; pair E; plain_scaling plain_scaling; @@ -56,71 +60,56 @@ pen Pentype(int n); triple gettriple(string name=<default>, triple default=<default>, string prompt=<default>, bool store=<default>); pen Yellow; real cm; +bool EndBar(picture, path, pen, marginT(path, pen)); +bool EndBar(picture, path, pen, marginT(path, pen))(real size=<default>); pen mediumgreen; pen heavygreen; pen dashdotted; bool diagnostics; +int debuggerlines; +frame bbox(picture pic=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>); pen deepblue; string graphicscale(real x); pen mediumblue; pen heavyblue; transform invert; pair NNW; +void drawarrow2(frame f, arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>); pair SE; pen thick(pen p=<default>); pen mediumred; marginT EndDotMargin(path, pen); -bool ArcArrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>); -bool ArcArrows(picture, path, pen, marginT(path, pen)); void filloutside(picture pic=<default>, path[] g, pen p=<default>, bool copy=<default>); void filloutside(frame f, path[] g, pen p=<default>, bool copy=<default>); filltype RadialShadeDraw(real xmargin=<default>, real ymargin=<default>, pen penc, pen penr, pen drawpen=<default>); marginT BeginDotMargin(path, pen); -frame enclose(string prefix=<default>, object F, string format=<default>); marker[] Mark; marker Mark(int n); projection projection(triple camera, triple up=<default>, triple target=<default>, triple normal=<default>, real zoom=<default>, real angle=<default>, pair viewportshift=<default>, bool showtarget=<default>, bool autoadjust=<default>, bool center=<default>, transformation projector(triple camera, triple up, triple target)); pen darkolive; pen Dotted; pen Dotted(pen p=<default>); -string math(real x); string math(string s); transform fixedscaling(picture pic=<default>, pair min, pair max, pen p=<default>, bool warn=<default>); pen Symbol(string series=<default>, string shape=<default>); bool needshipout(); int count; path circle(pair c, real r); -path ellipse(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); -path ellipse(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); -path ellipse(pair c, real a, real b); void updatefunction(); pen beveljoin; pen orange; pen green; -int getint(string name=<default>, int default=<default>, string prompt=<default>, bool store=<default>); -bool EndBar(picture, path, pen, marginT(path, pen)); -bool EndBar(picture, path, pen, marginT(path, pen))(real size=<default>); file stdin; -int debuggerlines; -frame bbox(picture pic=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>); path unitcircle; arrowhead DefaultHead; pen white; -scaleT scaleT(real T(real x), real Tinv(real x), bool logarithmic=<default>, bool automin=<default>, bool automax=<default>); -string baseline(string s, string template=<default>); position EndPoint; Legend Legend(string label, pen plabel=<default>, pen p=<default>, frame mark=<default>, bool above=<default>); void exitfunction(); -void drawarrow(frame f, arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>, bool forwards=<default>, marginT margin(path, pen)=<default>, bool center=<default>); string cputimeformat; pair arcpoint(path p, real L); bool interior(int windingnumber, pen fillrule); pen fuchsia; -pair[] pairs(real[] x, real[] y); -void eval(code s, bool embedded=<default>); -void eval(string s, bool embedded=<default>); -bool Arrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); -bool Arrow(picture, path, pen, marginT(path, pen)); pen brown; void bar(picture pic, pair a, pair d, pen p=<default>); picture bar(pair a, pair d, pen p=<default>); @@ -133,20 +122,23 @@ pen palemagenta; int mantissaBits; void copyPairOrTriple(pairOrTriple dest, pairOrTriple src); pen lightolive; +string outprefix(string prefix=<default>); +object object(frame f); +object object(Label L); +object object(Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); path arrowbase(path r, pair y, real t, real size); -frame pack(pair align=<default> ... object[] inset); pen[] monoPen; bool CW; pen Cyan; marginT EndPenMargin(path, pen); pair NNE; pen roundjoin; -void addArrow(picture pic, arrowhead arrowhead, path g, pen p, real size, real angle, filltype filltype, real position); pen lightgray; -picture arrow2(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>); void startScript(); pair relative(picture pic=<default>, pair z); position MidPoint; +bool ArcArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); +bool ArcArrow(picture, path, pen, marginT(path, pen)); string Embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>); pen deepgrey; pen lightyellow; @@ -156,6 +148,9 @@ side NoSide; file stdout; frame Seascape(frame f); pair up; +void savedefaults()(); +bool MidArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>); +bool MidArrow(picture, path, pen, marginT(path, pen)); pen ZapfChancery(string series=<default>, string shape=<default>); pair left; bool prconly(string format=<default>); @@ -167,13 +162,17 @@ string getstring(string name=<default>, string default=<default>, string prompt= marginT DotMargins(path, pen); path[] MarkPath; pen deepgray; +bool BeginArcArrow(picture, path, pen, marginT(path, pen)); +bool BeginArcArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); string defaultformat(int n, string trailingzero=<default>, bool fixed=<default>, bool signed=<default>); string defaultformat; pen lightcyan; pen paleblue; +real legendmargin; +bool None(picture, path, pen, marginT(path, pen)); frame align(frame f, pair align); -object align(object F, pair align); path[] align(path[] g, transform t=<default>, pair position, pair align, pen p=<default>); +object align(object F, pair align); transform scaleless(transform t); pen thin(); real arcarrowangle; @@ -188,15 +187,12 @@ real braceinnerangle; guide operator ---(... guide[]); int JOIN_IN; real barfactor; -void arrow(picture pic=<default>, Label L=<default>, pair b, pair dir, real length=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>); -picture arrow(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>, bool forwards=<default>, marginT margin(path, pen)=<default>, bool center=<default>); -void unitsize(picture pic=<default>, real x, real y=<default>, real z=<default>); pen lightgreen; void endl(file file); -bool ArcArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); -bool ArcArrow(picture, path, pen, marginT(path, pen)); void usersetting(); bool prc0(string format=<default>); +bool Bars(picture, path, pen, marginT(path, pen)); +bool Bars(picture, path, pen, marginT(path, pen))(real size=<default>); pair rectify(pair dir); arrowhead TeXHead; void beep(); @@ -205,9 +201,6 @@ real labelmargin(pen p=<default>); pen lightblue; real bracemidangle; path unitsquare; -void savedefaults()(); -bool MidArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>); -bool MidArrow(picture, path, pen, marginT(path, pen)); pen cyan; pen grey; transform rotation(transform t); @@ -215,6 +208,8 @@ pair W; pen magenta; pair WSW; pen nobasealign; +bool BeginArrow(picture, path, pen, marginT(path, pen)); +bool BeginArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); frame Landscape(frame f); real camerafactor; pen lightred; @@ -224,17 +219,13 @@ marginT DotMargin(path, pen); pen squarepen; pen deepyellow; real barsize(pen p=<default>); -bool BeginArcArrow(picture, path, pen, marginT(path, pen)); -bool BeginArcArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); -real legendmargin; -bool None(picture, path, pen, marginT(path, pen)); pen AvantGarde(string series=<default>, string shape=<default>); real circleprecision; pen Black; -pen Bookman(string series=<default>, string shape=<default>); +path box(pair a, pair b); path box(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); path box(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); -path box(pair a, pair b); +pen Bookman(string series=<default>, string shape=<default>); frame[] fit(string prefix=<default>, picture[] pictures, string format=<default>, bool view=<default>, string options=<default>, string script=<default>, projection P=<default>); void report(string text); void report(int i); @@ -249,12 +240,11 @@ path arc(pair c, explicit pair z1, explicit pair z2, bool direction=<default>); path arc(pair c, real r, real angle1, real angle2, bool direction); pair right; string outformat(string format=<default>); -string outprefix(string prefix=<default>); -object object(Label L); -object object(Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); -object object(frame f); +marker markthin(path g, pen p=<default>, real thin(real fraction)=<default>, filltype filltype=<default>); filltype Fill; filltype Fill(real xmargin=<default>, real ymargin=<default>, pen p=<default>); +bool EndArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); +bool EndArrow(picture, path, pen, marginT(path, pen)); pen Palatino(string series=<default>, string shape=<default>); pair[] intersectionpoints(path p, path q, real fuzz=<default>); pair[] intersectionpoints(explicit path[] p, explicit path[] q, real fuzz=<default>); @@ -272,8 +262,7 @@ bool finite(pair z); bool finite(triple v); filltype UnFill(real xmargin=<default>, real ymargin=<default>); filltype UnFill; -bool Bars(picture, path, pen, marginT(path, pen)); -bool Bars(picture, path, pen, marginT(path, pen))(real size=<default>); +frame enclose(string prefix=<default>, object F, string format=<default>); pair I; pair SSW; transform Slant(transform t); @@ -295,11 +284,14 @@ pen springgreen; pen heavygrey; void markuniform(picture pic=<default>, frame f, path g)(pair z(real t), real a, real b, int n); void markuniform(picture pic=<default>, frame f, path g)(bool centered=<default>, int n, bool rotated=<default>); -bool BeginArrow(picture, path, pen, marginT(path, pen)); -bool BeginArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); -real circlescale; bool ignore; +real circlescale; +frame dotframe(pen p=<default>, filltype filltype=<default>); +frame dotframe; pen darkblue; +path ellipse(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); +path ellipse(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); +path ellipse(pair c, real a, real b); real reltime(path p, real l); void marknodes(picture pic=<default>, frame f, path g); int JOIN_OUT; @@ -310,20 +302,20 @@ arrowhead HookHead; arrowhead HookHead(real dir=<default>, real barb=<default>); real[] concat(... real[][]); picture[] concat(... picture[][]); -marker[] concat(... marker[][]); pair[] concat(... pair[][]); pen[] concat(... pen[][]); coord[] concat(... coord[][]); -coord[] concat(... coord[][]); +object[] concat(... object[][]); Legend[] concat(... Legend[][]); path[] concat(... path[][]); +coord[] concat(... coord[][]); +Label[] concat(... Label[][]); int[] concat(... int[][]); void()()[] concat(... void()()[][]); bool3[] concat(... bool3[][]); string[] concat(... string[][]); -object[] concat(... object[][]); +marker[] concat(... marker[][]); triple[] concat(... triple[][]); -Label[] concat(... Label[][]); frame[] concat(... frame[][]); guide[] concat(... guide[][]); bool[] concat(... bool[][]); @@ -336,15 +328,19 @@ real dotfactor; pen palecyan; marginT BeginMargin(path, pen); path buildcycle(... path[] p); -marker markthin(path g, pen p=<default>, real thin(real fraction)=<default>, filltype filltype=<default>); +void unitsize(picture pic=<default>, real x, real y=<default>, real z=<default>); +void arrow(picture pic=<default>, Label L=<default>, pair b, pair dir, real length=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>); +picture arrow(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>, bool forwards=<default>, marginT margin(path, pen)=<default>, bool center=<default>); +pair[] pairs(real[] x, real[] y); +void eval(code s, bool embedded=<default>); +void eval(string s, bool embedded=<default>); +bool Arrow(picture, path, pen, marginT(path, pen)); +bool Arrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); void activatequote(picture pic=<default>); int undefined; -void drawarrow2(frame f, arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>); pen roundcap; void buildRestoreThunk()(); void overloadedMessage(file file); -bool EndArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>); -bool EndArrow(picture, path, pen, marginT(path, pen)); frame currentpatterns; real arrowfactor; pen heavyred; @@ -365,35 +361,38 @@ string[] array(int n, string value, int depth=<default>); pair[][] array(int n, pair[] value, int depth=<default>); bool3[] array(int n, bool3 value, int depth=<default>); coord[] array(int n, coord value, int depth=<default>); -coord[] array(int n, coord value, int depth=<default>); +object[] array(int n, object value, int depth=<default>); picture[] array(int n, picture value, int depth=<default>); -marker[] array(int n, marker value, int depth=<default>); Legend[] array(int n, Legend value, int depth=<default>); -Label[] array(int n, Label value, int depth=<default>); real[][] array(int n, real[] value, int depth=<default>); real[] array(int n, real value, int depth=<default>); triple[] array(int n, triple value, int depth=<default>); path[] array(int n, path value, int depth=<default>); frame[] array(int n, frame value, int depth=<default>); pen[][] array(int n, pen[] value, int depth=<default>); -object[] array(int n, object value, int depth=<default>); +coord[] array(int n, coord value, int depth=<default>); +marker[] array(int n, marker value, int depth=<default>); +Label[] array(int n, Label value, int depth=<default>); int[] array(int n, int value, int depth=<default>); string[][] array(int n, string[] value, int depth=<default>); pair[] array(int n, pair value, int depth=<default>); guide[] array(int n, guide value, int depth=<default>); pen[] array(int n, pen value, int depth=<default>); +string[] array(string s); real[] uniform(real a, real b, int n); pair viewportsize; +picture arrow2(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>); +void drawarrow(frame f, arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>, bool forwards=<default>, marginT margin(path, pen)=<default>, bool center=<default>); picture currentpicture; pen palegreen; +Label Label(Label L, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); Label Label(Label L, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); Label Label(string s, string size=<default>, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); Label Label(Label L, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); -Label Label(explicit pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); Label Label; +Label Label(explicit pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); Label Label(string s=<default>, string size=<default>, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); Label Label(string s, string size=<default>, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); -Label Label(Label L, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>); hsv hsv(real h, real s, real v); hsv hsv(pen p); pair N; @@ -409,20 +408,21 @@ real arrowangle; transform Rotate(transform)(pair z); transform Rotate(transform t); bool inXasyMode; -frame dotframe(pen p=<default>, filltype filltype=<default>); -frame dotframe; real arcarrowfactor; real mm; plain plain; +int getint(string name=<default>, int default=<default>, string prompt=<default>, bool store=<default>); +int bitreverse(int a, int bits); int CTZ(int a); +int popcount(int a); int NOT(int a); int XOR(int a, int b); int OR(int a, int b); real[][] scale3(real s); int AND(int a, int b); real[] cubicroots(real a, real b, real c, real d); -void attach(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>); void attach(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>); +void attach(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>); real[] quadraticroots(real a, real b, real c); pair[] quadraticroots(explicit pair a, explicit pair b, explicit pair c); path[] strokepath(path g, pen p=<default>); @@ -618,8 +618,8 @@ void clear(); void clear(string file, string text); void unfill(frame f, path[] g, bool copy=<default>); void unfill(picture pic=<default>, path[] g, bool copy=<default>); -bool Bar(picture, path, pen, marginT(path, pen))(real size=<default>); bool Bar(picture, path, pen, marginT(path, pen)); +bool Bar(picture, path, pen, marginT(path, pen))(real size=<default>); bool eol(file f); bool eof(file f); pen paleyellow; @@ -657,15 +657,18 @@ marker dot(pen p=<default>, filltype filltype=<default>); void dot(picture pic=<default>, pair z, pen p=<default>, filltype filltype=<default>); void dot(frame f, pair z, pen p=<default>, filltype filltype=<default>); void dot(picture pic=<default>, Label L, pen p=<default>, filltype filltype=<default>); +marker dot; void dot(picture pic=<default>, Label[] L=<default>, pair[] z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>); void dot(picture pic=<default>, path[] g, pen p=<default>, filltype filltype=<default>); -marker dot; void dot(picture pic=<default>, Label L, pair z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>); pair ESE; pair project(triple v, real[][] t); real[][] AtA(real[][] a); real[] solve(real[][] a, real[] b, bool warn=<default>); real[][] solve(real[][] a, real[][] b, bool warn=<default>); +scaleT scaleT(real T(real x), real Tinv(real x), bool logarithmic=<default>, bool automin=<default>, bool automax=<default>); +string baseline(string s, string template=<default>); +int[] findall(bool[] a); bool BeginBar(picture, path, pen, marginT(path, pen)); bool BeginBar(picture, path, pen, marginT(path, pen))(real size=<default>); triple perp(triple v, triple u); @@ -677,7 +680,9 @@ bool[] operator !(bool[] a); bool operator !(bool b); int[] sequence(int n); pen[][] sequence(pen[] f(int), int n); -object[] sequence(object f(int), int n); +coord[] sequence(coord f(int), int n); +marker[] sequence(marker f(int), int n); +Label[] sequence(Label f(int), int n); int[] sequence(int f(int), int n); string[][] sequence(string[] f(int), int n); pair[] sequence(pair f(int), int n); @@ -689,11 +694,9 @@ string[] sequence(string f(int), int n); pair[][] sequence(pair[] f(int), int n); bool3[] sequence(bool3 f(int), int n); coord[] sequence(coord f(int), int n); -coord[] sequence(coord f(int), int n); +object[] sequence(object f(int), int n); picture[] sequence(picture f(int), int n); -marker[] sequence(marker f(int), int n); Legend[] sequence(Legend f(int), int n); -Label[] sequence(Label f(int), int n); real[][] sequence(real[] f(int), int n); real[] sequence(real f(int), int n); int[] sequence(int n, int m); @@ -749,18 +752,18 @@ void draw(frame f, triple[] p, real[] knot, real[] weights=<default>, pen p); void draw(frame f, triple[][] p, real[] uknot, real[] vknot, real[][] weights=<default>, pen[] p, real opacity, real shininess, real prcshininess, pen[] colors); void draw(frame f, triple[] v, int[][] vi, triple[] n, int[][] ni, pen[] p, real opacity, real shininess, real prcshininess, pen[] c=<default>, int[][] ci=<default>); void draw(picture pic=<default>, path[] g, pen fillrule=<default>, pen[] p); -object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), pair position, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); +object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); +void draw(frame f, explicit path[] g, pen p=<default>); +void draw(frame f, path g, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))); void draw(picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); void draw(pair origin, picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); -void draw(frame f, explicit path[] g, pen p=<default>); void draw(picture pic=<default>, guide[] g, pen p=<default>, Label legend=<default>, marker marker=<default>); void draw(pair origin, picture pic=<default>, guide[] g, pen p=<default>, Label legend=<default>, marker marker=<default>); +object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), pair position, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); void draw(picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>); void draw(pair origin, picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>); -object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); void draw(frame f, guide[] g, pen p=<default>); void draw(frame f, path g, pen p=<default>); -void draw(frame f, path g, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))); void deconstruct(frame f, frame preamble=<default>, real magnification=<default>, transform xform()); void deconstruct(picture pic=<default>, real magnification=<default>); void shipout3(string prefix, frame f, string format=<default>, real width, real height, real angle, real zoom, triple m, triple m, pair shift, real[][] t, real[] background, triple[] lights, real[][] diffuse, real[][] ambient, real[][] specular, bool viewportlighting, bool view=<default>); @@ -794,23 +797,23 @@ void tex(picture pic=<default>, string s); void tex(picture pic=<default>, string s, pair min, pair max); void prepend(frame dest, frame src); void add(frame dest, frame src); +void add(picture pic=<default>, void d(frame f, transform t), bool exact=<default>); +void add(frame dest, frame src, filltype filltype, bool above=<default>); +void add(frame dest, frame src, bool group, filltype filltype=<default>, bool above=<default>); +void add(picture pic=<default>, void d(picture, real[][]), bool exact=<default>); +void add(frame dest, frame src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>); +void add(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>); +void add(picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>); void add(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>); void add(frame dest, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>); void add(picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>); -void add(picture pic=<default>, void d(frame f, transform t), bool exact=<default>); -void add(picture pic=<default>, void d(picture, real[][]), bool exact=<default>); -void add(picture pic=<default>, Label L); +void add(picture pic=<default>, void d(frame f, real[][] t, picture pic, projection P), bool exact=<default>); +void add(picture pic=<default>, void d(picture, transform), bool exact=<default>); void add(picture dest, picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>); +void add(picture pic=<default>, Label L); void add(frame f, transform t=<default>, Label L); void add(picture dest, picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>); void add(picture dest=<default>, object F, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>); -void add(frame dest, frame src, filltype filltype, bool above=<default>); -void add(frame dest, frame src, bool group, filltype filltype=<default>, bool above=<default>); -void add(picture pic=<default>, void d(frame f, real[][] t, picture pic, projection P), bool exact=<default>); -void add(frame dest, frame src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>); -void add(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>); -void add(picture pic=<default>, void d(picture, transform), bool exact=<default>); -void add(picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>); void endgroup3(frame f); void _begingroup3(frame f, string name, real compression, real granularity, bool closed, bool tessellate, bool dobreak, bool nobreak, triple center, int interaction); void endgroup(frame f); @@ -1042,31 +1045,33 @@ pen currentpen; string VERSION; bool alias(pair[][] a, pair[][] b); bool alias(guide[] a, guide[] b); -bool alias(marginT a, marginT b); +bool alias(hsv a, hsv b); +bool alias(coord[] a, coord[] b); bool alias(scaleT a, scaleT b); -bool alias(object a, object b); -bool alias(cputime a, cputime b); +bool alias(side a, side b); +bool alias(marker a, marker b); +bool alias(Label[] a, Label[] b); bool alias(pair[] a, pair[] b); -bool alias(coord a, coord b); +bool alias(scaling a, scaling b); bool alias(coord a, coord b); bool alias(Legend a, Legend b); -bool alias(side a, side b); -bool alias(framedTransformStack a, framedTransformStack b); -bool alias(Label[] a, Label[] b); +bool alias(object a, object b); +bool alias(cputime a, cputime b); bool alias(int[] a, int[] b); bool alias(string[][] a, string[][] b); -bool alias(slice a, slice b); +bool alias(filltype a, filltype b); bool alias(freezableBounds a, freezableBounds b); bool alias(projection a, projection b); -bool alias(position a, position b); -bool alias(arrowhead a, arrowhead b); +bool alias(framedTransformStack a, framedTransformStack b); bool alias(real[][] a, real[][] b); bool alias(bool3 a, bool3 b); bool alias(bool3[] a, bool3[] b); bool alias(autoscaleT a, autoscaleT b); +bool alias(position a, position b); +bool alias(arrowhead a, arrowhead b); bool alias(string[] a, string[] b); bool alias(frame[] a, frame[] b); -bool alias(scaling a, scaling b); +bool alias(coords2 a, coords2 b); bool alias(scaling a, scaling b); bool alias(bounds a, bounds b); bool alias(light a, light b); @@ -1074,29 +1079,27 @@ bool alias(pairOrTriple a, pairOrTriple b); bool alias(bool[] a, bool[] b); bool alias(void()()[] a, void()()[] b); bool alias(pen[][] a, pen[][] b); -bool alias(filltype a, filltype b); -bool alias(coord[] a, coord[] b); +bool alias(marginT a, marginT b); bool alias(coord[] a, coord[] b); bool alias(coords3 a, coords3 b); -bool alias(Label a, Label b); +bool alias(align a, align b); +bool alias(object[] a, object[] b); bool alias(Legend[] a, Legend[] b); -bool alias(processtime a, processtime b); bool alias(path[] a, path[] b); bool alias(triple[] a, triple[] b); +bool alias(coord a, coord b); bool alias(ScaleT a, ScaleT b); -bool alias(align a, align b); -bool alias(object[] a, object[] b); -bool alias(indexedTransform a, indexedTransform b); +bool alias(Label a, Label b); +bool alias(marker[] a, marker[] b); +bool alias(processtime a, processtime b); bool alias(real[] a, real[] b); bool alias(pen[] a, pen[] b); -bool alias(hsv a, hsv b); -bool alias(coords2 a, coords2 b); +bool alias(slice a, slice b); bool alias(coords2 a, coords2 b); bool alias(transformation a, transformation b); bool alias(picture a, picture b); bool alias(picture[] a, picture[] b); -bool alias(marker a, marker b); -bool alias(marker[] a, marker[] b); +bool alias(indexedTransform a, indexedTransform b); real pi; void initXasyMode(); int randMax; @@ -1118,26 +1121,26 @@ real[] map(real f(pair), pair[] a); int[] map(int f(real), real[] a); bool3[] map(bool3 f(bool3), bool3[] a); frame[] map(frame f(frame), frame[] a); +coord[] map(coord f(coord), coord[] a); +Label[] map(Label f(Label), Label[] a); pen[][] map(pen[] f(pen[]), pen[][] a); triple[] map(triple f(triple), triple[] a); pen[] map(pen f(pen), pen[] a); coord[] map(coord f(coord), coord[] a); -coord[] map(coord f(coord), coord[] a); +object[] map(object f(object), object[] a); Legend[] map(Legend f(Legend), Legend[] a); pair[] map(pair f(pair), pair[] a); string[] map(string f(string), string[] a); picture[] map(picture f(picture), picture[] a); -marker[] map(marker f(marker), marker[] a); void()()[] map(void f()()(void()()), void()()[] a); pair[][] map(pair[] f(pair[]), pair[][] a); real[] map(real f(real), real[] a); int[] map(int f(int), int[] a); string[][] map(string[] f(string[]), string[][] a); -Label[] map(Label f(Label), Label[] a); bool[] map(bool f(bool), bool[] a); path[] map(path f(path), path[] a); real[][] map(real[] f(real[]), real[][] a); -object[] map(object f(object), object[] a); +marker[] map(marker f(marker), marker[] a); guide[] map(guide f(guide), guide[] a); real identity(real x); real[] identity(real[] a); @@ -1153,9 +1156,8 @@ real[] log1p(real[] a); path brace(pair a, pair b, real amplitude=<default>); void deactivatequote(picture pic=<default>); string format(string format, int x, string locale=<default>); -string format(string format, string separator, real x, string locale=<default>); -string format(string format, real x, string locale=<default>); -string format(real x, string locale=<default>); +string format(string format, bool forcemath=<default>, string separator, real x, string locale=<default>); +string format(string format=<default>, bool forcemath=<default>, real x, string locale=<default>); real expm1(real x); real[] expm1(real[] a); void label(frame f, string s, string size, transform t, pair position, pair align, pen p); @@ -1253,21 +1255,21 @@ int search(real[] a, real key); int search(string[] a, string key); int search(void()()[] a, void key()(), bool less(void()(), void()())); int search(picture[] a, picture key, bool less(picture, picture)); -int search(marker[] a, marker key, bool less(marker, marker)); int search(real[] a, real key, bool less(real, real)); int search(guide[] a, guide key, bool less(guide, guide)); int search(pair[] a, pair key, bool less(pair, pair)); int search(coord[] a, coord key, bool less(coord, coord)); -int search(coord[] a, coord key, bool less(coord, coord)); +int search(object[] a, object key, bool less(object, object)); int search(Legend[] a, Legend key, bool less(Legend, Legend)); int search(frame[] a, frame key, bool less(frame, frame)); +int search(coord[] a, coord key, bool less(coord, coord)); +int search(Label[] a, Label key, bool less(Label, Label)); int search(int[] a, int key, bool less(int, int)); int search(bool3[] a, bool3 key, bool less(bool3, bool3)); -int search(object[] a, object key, bool less(object, object)); +int search(marker[] a, marker key, bool less(marker, marker)); int search(string[] a, string key, bool less(string, string)); int search(path[] a, path key, bool less(path, path)); int search(pen[] a, pen key, bool less(pen, pen)); -int search(Label[] a, Label key, bool less(Label, Label)); int search(bool[] a, bool key, bool less(bool, bool)); int search(triple[] a, triple key, bool less(triple, triple)); int[] sort(int[] a); @@ -1276,28 +1278,28 @@ real[] sort(real[] a); real[][] sort(real[][] a); string[] sort(string[] a); string[][] sort(string[][] a); -Label[] sort(Label[] a, bool less(Label, Label)); path[] sort(path[] a, bool less(path, path)); pair[] sort(pair[] a, bool less(pair, pair)); void()()[] sort(void()()[] a, bool less(void()(), void()())); real[] sort(real[] a, bool less(real, real)); bool[] sort(bool[] a, bool less(bool, bool)); picture[] sort(picture[] a, bool less(picture, picture)); -marker[] sort(marker[] a, bool less(marker, marker)); pen[] sort(pen[] a, bool less(pen, pen)); pen[][] sort(pen[][] a, bool less(pen[], pen[])); coord[] sort(coord[] a, bool less(coord, coord)); -coord[] sort(coord[] a, bool less(coord, coord)); +object[] sort(object[] a, bool less(object, object)); Legend[] sort(Legend[] a, bool less(Legend, Legend)); guide[] sort(guide[] a, bool less(guide, guide)); real[][] sort(real[][] a, bool less(real[], real[])); triple[] sort(triple[] a, bool less(triple, triple)); +coord[] sort(coord[] a, bool less(coord, coord)); +Label[] sort(Label[] a, bool less(Label, Label)); string[] sort(string[] a, bool less(string, string)); int[] sort(int[] a, bool less(int, int)); string[][] sort(string[][] a, bool less(string[], string[])); bool3[] sort(bool3[] a, bool less(bool3, bool3)); pair[][] sort(pair[][] a, bool less(pair[], pair[])); -object[] sort(object[] a, bool less(object, object)); +marker[] sort(marker[] a, bool less(marker, marker)); frame[] sort(frame[] a, bool less(frame, frame)); pair postcontrol(path p, int t); pair postcontrol(path p, real t); @@ -1329,11 +1331,11 @@ pair max(frame f); pair max(explicit path p); pair max(path[] p); triple max(path3 p); +real max(real M, scaling s, coord[] c); int max(... int[] a); pair max(picture pic, bool user=<default>); real max(... real[] a); real max(real M, scaling s, coord[] c); -real max(real M, scaling s, coord[] c); void restore(); pen basealign(int n); int basealign(pen p=<default>); @@ -1434,7 +1436,9 @@ triple[] copy(triple[] a, int depth=<default>); bool[] copy(bool[] a, int depth=<default>); real[][] copy(real[][] a, int depth=<default>); pen[] copy(pen[] a, int depth=<default>); -object[] copy(object[] a, int depth=<default>); +coord[] copy(coord[] a, int depth=<default>); +marker[] copy(marker[] a, int depth=<default>); +Label[] copy(Label[] a, int depth=<default>); pen[][] copy(pen[][] a, int depth=<default>); path[] copy(path[] a, int depth=<default>); string[] copy(string[] a, int depth=<default>); @@ -1445,11 +1449,9 @@ frame[] copy(frame[] a, int depth=<default>); pair[] copy(pair[] a, int depth=<default>); bool3[] copy(bool3[] a, int depth=<default>); coord[] copy(coord[] a, int depth=<default>); -coord[] copy(coord[] a, int depth=<default>); +object[] copy(object[] a, int depth=<default>); picture[] copy(picture[] a, int depth=<default>); -marker[] copy(marker[] a, int depth=<default>); Legend[] copy(Legend[] a, int depth=<default>); -Label[] copy(Label[] a, int depth=<default>); pair[][] copy(pair[][] a, int depth=<default>); real[] abs(pair[] a); real[] abs(triple[] a); @@ -1535,15 +1537,15 @@ triple operator *(real[][] t, triple v); triple operator *(real x, triple v); triple operator *(triple v, real x); path3 operator *(real[][] t, path3 g); -Label operator *(transform t, Label L); +side operator *(real x, side s); +Label operator *(real[][] t, Label L); picture operator *(transform t, picture orig); bounds operator *(transform t, bounds b); path[] operator *(transform t, explicit path[] p); +object operator *(transform t, explicit object F); pair[] operator *(transform t, pair[] z); -Label operator *(real[][] t, Label L); +Label operator *(transform t, Label L); picture operator *(real[][] t, picture orig); -side operator *(real x, side s); -object operator *(transform t, explicit object F); real latitude(triple v, bool warn=<default>); int sum(int[] a); real sum(real[] a); @@ -1622,13 +1624,13 @@ void write(file file, void suffix(file)=<default>); void write(file file=<default>, string s=<default>, pen[] p); void write(void suffix(file)=<default>); void write(file file, string s=<default>, explicit path[] x, void suffix(file)=<default>); -void write(file file=<default>, align align, void suffix(file)=<default>); +void write(file file=<default>, Label L, void suffix(file)=<default>); void write(pairOrTriple a); void write(file file, string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>); void write(string s=<default>, bool3 b, void suffix(file)=<default>); void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>); void write(string s=<default>, explicit guide[] x, void suffix(file)=<default>); -void write(file file=<default>, Label L, void suffix(file)=<default>); +void write(file file=<default>, align align, void suffix(file)=<default>); bool operator !=(bool a, bool b); bool[] operator !=(bool a, bool[] b); bool[] operator !=(bool[] a, bool b); @@ -1667,40 +1669,40 @@ bool operator !=(path a, path b); bool operator !=(path3 a, path3 b); bool operator !=(bool3 a, bool3 b); bool operator !=(autoscaleT a, autoscaleT b); -bool operator !=(scaling a, scaling b); +bool operator !=(position a, position b); +bool operator !=(arrowhead a, arrowhead b); +bool operator !=(coords2 a, coords2 b); bool operator !=(scaling a, scaling b); bool operator !=(bounds a, bounds b); bool operator !=(light a, light b); bool operator !=(pairOrTriple a, pairOrTriple b); -bool operator !=(filltype a, filltype b); +bool operator !=(marginT a, marginT b); bool operator !=(coords3 a, coords3 b); +bool operator !=(align a, align b); +bool operator !=(coord a, coord b); +bool operator !=(ScaleT a, ScaleT b); bool operator !=(Label a, Label b); bool operator !=(processtime a, processtime b); -bool operator !=(ScaleT a, ScaleT b); -bool operator !=(align a, align b); -bool operator !=(indexedTransform a, indexedTransform b); -bool operator !=(hsv a, hsv b); -bool operator !=(coords2 a, coords2 b); +bool operator !=(slice a, slice b); bool operator !=(coords2 a, coords2 b); bool operator !=(transformation a, transformation b); bool operator !=(picture a, picture b); -bool operator !=(marker a, marker b); +bool operator !=(indexedTransform a, indexedTransform b); bool operator !=(bool3 a, bool b); -bool operator !=(marginT a, marginT b); +bool operator !=(hsv a, hsv b); bool operator !=(scaleT a, scaleT b); -bool operator !=(object a, object b); -bool operator !=(cputime a, cputime b); -bool operator !=(coord a, coord b); +bool operator !=(side a, side b); +bool operator !=(marker a, marker b); +bool operator !=(scaling a, scaling b); bool operator !=(coord a, coord b); bool operator !=(Legend a, Legend b); -bool operator !=(side a, side b); -bool operator !=(framedTransformStack a, framedTransformStack b); +bool operator !=(object a, object b); +bool operator !=(cputime a, cputime b); bool operator !=(bool a, bool3 b); -bool operator !=(slice a, slice b); +bool operator !=(filltype a, filltype b); bool operator !=(freezableBounds a, freezableBounds b); bool operator !=(projection a, projection b); -bool operator !=(position a, position b); -bool operator !=(arrowhead a, arrowhead b); +bool operator !=(framedTransformStack a, framedTransformStack b); bool operator ==(bool a, bool b); bool[] operator ==(bool a, bool[] b); bool[] operator ==(bool[] a, bool b); @@ -1739,40 +1741,40 @@ bool operator ==(path a, path b); bool operator ==(path3 a, path3 b); bool operator ==(bool3 a, bool3 b); bool operator ==(autoscaleT a, autoscaleT b); -bool operator ==(scaling a, scaling b); +bool operator ==(position a, position b); +bool operator ==(arrowhead a, arrowhead b); +bool operator ==(coords2 a, coords2 b); bool operator ==(scaling a, scaling b); bool operator ==(bounds a, bounds b); bool operator ==(light a, light b); bool operator ==(pairOrTriple a, pairOrTriple b); -bool operator ==(filltype a, filltype b); +bool operator ==(marginT a, marginT b); bool operator ==(coords3 a, coords3 b); +bool operator ==(align a, align b); +bool operator ==(coord a, coord b); +bool operator ==(ScaleT a, ScaleT b); bool operator ==(Label a, Label b); bool operator ==(processtime a, processtime b); -bool operator ==(ScaleT a, ScaleT b); -bool operator ==(align a, align b); -bool operator ==(indexedTransform a, indexedTransform b); -bool operator ==(hsv a, hsv b); -bool operator ==(coords2 a, coords2 b); +bool operator ==(slice a, slice b); bool operator ==(coords2 a, coords2 b); bool operator ==(transformation a, transformation b); bool operator ==(picture a, picture b); -bool operator ==(marker a, marker b); +bool operator ==(indexedTransform a, indexedTransform b); bool operator ==(bool3 a, bool b); -bool operator ==(marginT a, marginT b); +bool operator ==(hsv a, hsv b); bool operator ==(scaleT a, scaleT b); -bool operator ==(object a, object b); -bool operator ==(cputime a, cputime b); -bool operator ==(coord a, coord b); +bool operator ==(side a, side b); +bool operator ==(marker a, marker b); +bool operator ==(scaling a, scaling b); bool operator ==(coord a, coord b); bool operator ==(Legend a, Legend b); -bool operator ==(side a, side b); -bool operator ==(framedTransformStack a, framedTransformStack b); +bool operator ==(object a, object b); +bool operator ==(cputime a, cputime b); bool operator ==(bool a, bool3 b); -bool operator ==(slice a, slice b); +bool operator ==(filltype a, filltype b); bool operator ==(freezableBounds a, freezableBounds b); bool operator ==(projection a, projection b); -bool operator ==(position a, position b); -bool operator ==(arrowhead a, arrowhead b); +bool operator ==(framedTransformStack a, framedTransformStack b); bool operator ^(bool a, bool b); bool[] operator ^(bool a, bool[] b); bool[] operator ^(bool[] a, bool b); @@ -1842,9 +1844,10 @@ triple[] operator +(triple[] a); pen operator +(pen a, pen b); transform operator +(transform a, transform b); pen operator +(pen p, real w); +marginT operator +(path, pen)(marginT ma(path, pen), marginT mb(path, pen)); pen[] operator +(pen a, pen[] b); pen operator +(real w, pen p); -marginT operator +(path, pen)(marginT ma(path, pen), marginT mb(path, pen)); +string operator +(... string[] a); pen[] operator +(pen[] a, pen b); real operator cast(int); pair operator cast(int); @@ -1890,30 +1893,30 @@ guide operator cast(tensionSpecifier t); guide[] operator cast(path[] g); pair operator cast(pairOrTriple a); triple operator cast(pairOrTriple a); -hsv operator cast(pen p); +position operator cast(real x); +Label operator cast(string s); +frame operator cast(object F); bool3[] operator cast(bool[] b); -align operator cast(pair dir); -object operator cast(Label L); -Label operator cast(object F); -position operator cast(int x); -object operator cast(string s); +align operator cast(side side); +position operator cast(pair x); guide[] operator cast(pair[] z); -align operator cast(triple dir); path[] operator cast(guide[] g); bool operator cast(bool3 b); -position operator cast(real x); -Label operator cast(string s); +pair operator cast(position P); +object operator cast(frame f); path[] operator cast(guide g); -align operator cast(side side); -frame operator cast(object F); +object operator cast(Label L); +Label operator cast(object F); +pen operator cast(hsv hsv); +align operator cast(pair dir); path[] operator cast(pair[] z); path[] operator cast(path p); bool[] operator cast(bool3[] b); -position operator cast(pair x); -pair operator cast(position P); +hsv operator cast(pen p); +align operator cast(triple dir); bool3 operator cast(bool b); -object operator cast(frame f); -pen operator cast(hsv hsv); +position operator cast(int x); +object operator cast(string s); pen deepred; bool error(file f); string operator ecast(int); @@ -1941,107 +1944,105 @@ path3 operator init(); pen operator init(); frame operator init(); file operator init(); -marginT operator init(); +hsv operator init(); scaleT operator init(); -object operator init(); -cputime operator init(); -filltype operator init(); +side operator init(); +marker operator init(); +marginT operator init(); coords3 operator init(); -Label operator init(); -processtime operator init(); -slice operator init(); +align operator init(); +filltype operator init(); projection operator init(); -position operator init(); -arrowhead operator init(); -hsv operator init(); -coords2 operator init(); +framedTransformStack operator init(); +slice operator init(); coords2 operator init(); transformation operator init(); picture operator init(); -marker operator init(); -scaling operator init(); +indexedTransform operator init(); +coords2 operator init(); scaling operator init(); bounds operator init(); light operator init(); pairOrTriple operator init(); -coord operator init(); +scaling operator init(); coord operator init(); Legend operator init(); -side operator init(); -framedTransformStack operator init(); +object operator init(); +cputime operator init(); +coord operator init(); ScaleT operator init(); -align operator init(); -indexedTransform operator init(); +Label operator init(); +processtime operator init(); bool3 operator init(); autoscaleT operator init(); +position operator init(); +arrowhead operator init(); sCAD operator init(); -frame BBox(frame)(real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>); -real animationdelay; frame NoBox(frame f); +real animationdelay; animation operator init(); +frame BBox(frame)(real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>); void annotate(picture pic=<default>, string title, string text, pair position); void babel(string s); path[] bezulate(path[] p); -path subdivide(path p); +bool checkSegment(path g, pair p, pair q); void connect(path[] paths, path[] result, path[] patch); path uncycle(path p, real t); -bool isDuplicate(pair a, pair b, real relSize); -path[][] containmentTree(path[] paths); +path section(path p, real t1, real t2, bool loop=<default>); int countIntersections(path[] p, pair start, pair end); real[][] intersections(pair a, pair b, path p); real maxrefinements; +real duplicateFuzz; +path subdivide(path p); +path[][] containmentTree(path[] paths); +bool isDuplicate(pair a, pair b, real relSize); real fuzz; path removeDuplicates(path p); -real duplicateFuzz; -bool checkSegment(path g, pair p, pair q); -path section(path p, real t1, real t2, bool loop=<default>); -key nil; -binarytreeNode binarytreeNode(int key); -binarytree searchtree(... int[] keys); binarytree binarytree(... key[] keys); +key nil; key key(int n, bool active=<default>); +real minDistDefault; +real nodeMarginDefault; +binarytreeNode binarytreeNode(int key); object draw(picture pic=<default>, binarytreeNode node, pair pos, int height, real minDist, real levelDist, real nodeDiameter, pen p=<default>, bool condensed=<default>); void draw(picture pic=<default>, binarytree tree, real minDist=<default>, real nodeMargin=<default>, pen p=<default>, bool condensed=<default>); -real minDistDefault; binarytreeNode operator init(); key operator init(); binarytree operator init(); -real nodeMarginDefault; key operator cast(int n); int operator cast(key k); int[] operator cast(key[] k); -line intersection(face a, face b); -splitface split(face a, face cut, projection P); -void add(picture pic=<default>, face[] faces, projection P=<default>); +binarytree searchtree(... int[] keys); real epsilon; +void add(picture pic=<default>, face[] faces, projection P=<default>); +picture operator cast(face f); +face operator cast(path3 p); face operator init(); line operator init(); half operator init(); splitface operator init(); bsp operator init(); -picture operator cast(face f); -face operator cast(path3 p); +line intersection(face a, face b); +splitface split(face a, face cut, projection P); void addseg(pair[][] gds, segment seg); pen[] extend(pen[] palette, pen below, pen above); guide[][] connect(pair[][][] points, real[] c, guide join(... guide[])); void collect(pair[][][] points, real[] c); +segment case3(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge=<default>); segment case1(pair p0, pair p1, int edge); real eps; -segment case3(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge=<default>); -void fill(picture pic=<default>, guide[][] g, pen[][] palette); -pen[][] interior(picture pic=<default>, guide[][] g, pen[] palette); -void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen[] p); -void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen p=<default>); +segment checktriangle(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge=<default>); guide[][] contour(pair[][] z, real[][] f, real[][] midpoint=<default>, real[] c, guide join(... guide[])=<default>); guide[][] contour(real[][] f, real[][] midpoint=<default>, pair a, pair b, real[] c, guide join(... guide[])=<default>); guide[][] contour(real f(real, real), pair a, pair b, real[] c, int nx=<default>, int ny=<default>, guide join(... guide[])=<default>); guide[][] contour(real f(pair), pair a, pair b, real[] c, int nx=<default>, int ny=<default>, guide join(... guide[])=<default>); guide[][] contour(pair[] z, real[] f, real[] c, guide join(... guide[])=<default>); -segment operator init(); -segment checktriangle(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge=<default>); segment case2(pair p0, pair p1, pair p2, real v0, real v1, real v2, int edge); -surface surface(vertex[][] g); -real eps; +segment operator init(); +void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen[] p); +void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen p=<default>); +pen[][] interior(picture pic=<default>, guide[][] g, pen[] palette); +void fill(picture pic=<default>, guide[][] g, pen[][] palette); vertex[][] contour3(triple[][][] v, real[][][] f, real[][][] midpoint=<default>, projection P=<default>); vertex[][] contour3(real[][][] f, real[][][] midpoint=<default>, triple a, triple b, projection P=<default>); vertex[][] contour3(real f(real, real, real), triple a, triple b, int nx=<default>, int ny=<default>, int nz=<default>, projection P=<default>); @@ -2049,420 +2050,141 @@ weighted operator init(); bucket operator init(); vertex operator init(); object operator init(); -void drawAll(TreeNode node, frame f); -real layout(int level, TreeNode node); +surface surface(vertex[][] g); +real eps; +real treeLevelStep; real treeMinNodeWidth; real treeNodeStep; -void add(TreeNode child, TreeNode parent); -void draw(TreeNode root, pair pos); -real treeLevelStep; TreeNode makeNode(TreeNode parent=<default>, frame f); TreeNode makeNode(TreeNode parent=<default>, Label label); TreeNode operator init(); +void add(TreeNode child, TreeNode parent); +void draw(TreeNode root, pair pos); +void drawAll(TreeNode node, frame f); +real layout(int level, TreeNode node); string link(string label, string text=<default>); string embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>); string embedplayer(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>); -string embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>, string image=<default>); -string hyperlink(string url, string text); string link(string label, string text=<default>); -void texshipout(string stem, picture pic=<default>, bool xalign=<default>); -bool XYAlign; -void fmdefaults(); +string hyperlink(string url, string text); +string embed(string name, string text=<default>, string options=<default>, real width=<default>, real height=<default>, string image=<default>); void drawMomArrow(picture pic=<default>, path p, align align, position pos=<default>, real offset=<default>, real length=<default>, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real margin=<default>); -void drawVertexX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>); +void drawVertexOX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>); +void drawVertexBoxO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>); void drawVertexBox(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>); void drawVertexTriangle(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>); void drawVertex(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>); +void drawDoubleLine(picture pic=<default>, path p, pen fgpen=<default>, real dlspacing=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); void drawGhost(picture pic=<default>, path p, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); -void drawScalar(picture pic=<default>, path p, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); -void drawFermion(picture pic=<default>, path p, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); -void drawPhoton(picture pic=<default>, path p, real amp=<default>, real width=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); -path momArrowPath(path p, align align, position pos, real offset=<default>, real length=<default>); -path photon(path p, real amp=<default>, real width=<default>); -path gluon(path p, real amp=<default>, real width=<default>); -void do_overpaint(picture pic, path p, pen bgpen, real halfwidth, real vertexangle); -bool appendsuffix; -real momarrowsize(pen p=<default>); -real momarrowfactor; real momarrowmargin; real momarrowoffset; pen momarrowpen; -real momarrowlength; -real bigvertexsize; +bool currentmomarrow(picture, path, pen, marginT(path, pen)); +real vertexsize; +real minvertexangle; real linemargin; +bool overpaint; bool currentarrow(picture, path, pen, marginT(path, pen)); -pen vertexpen; -pen ghostpen; -pen scalarpen; -pen fermionpen; +real doublelinespacing; +pen doublelinepen; +real photonamplitude; +real gluonamplitude; real photonratio; -real gluonratio; -bool YAlign; +pen gluonpen; +pen fermionpen; +real momarrowsize(pen p=<default>); +void drawVertexX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>); +real momarrowfactor; void drawVertexO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>); +void fmdefaults(); +void texshipout(string stem, picture pic=<default>, bool xalign=<default>); void drawVertexTriangleO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>); -void drawVertexOX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>); -void drawDoubleLine(picture pic=<default>, path p, pen fgpen=<default>, real dlspacing=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); -bool currentmomarrow(picture, path, pen, marginT(path, pen)); -bool overpaint; -real minvertexangle; +path photon(path p, real amp=<default>, real width=<default>); +real momarrowlength; +path gluon(path p, real amp=<default>, real width=<default>); +bool XYAlign; +bool YAlign; +void drawFermion(picture pic=<default>, path p, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); +void drawPhoton(picture pic=<default>, path p, real amp=<default>, real width=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); +bool appendsuffix; +pen vertexpen; +real gluonratio; +void drawGluon(picture pic=<default>, path p, real amp=<default>, real width=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); +path momArrowPath(path p, align align, position pos, real offset=<default>, real length=<default>); pen backgroundpen; -pen doublelinepen; +pen ghostpen; +void do_overpaint(picture pic, path p, pen bgpen, real halfwidth, real vertexangle); +pen scalarpen; void drawVertexBoxX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>); -real gluonamplitude; -pen gluonpen; +real bigvertexsize; +void drawScalar(picture pic=<default>, path p, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); +string includegraphicscommand; pen photonpen; -real photonamplitude; -real doublelinespacing; -real vertexsize; -void drawVertexBoxO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>); pen bigvertexpen; -string includegraphicscommand; -void drawGluon(picture pic=<default>, path p, real amp=<default>, real width=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>); Dir Down; -Dir Up; -path path(pair[] point ... flowdir[] dir); +Dir Left; block bevel(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real dh=<default>, real dw=<default>, real minwidth=<default>, real minheight=<default>); block roundrectangle(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real ds=<default>, real dw=<default>, real minwidth=<default>, real minheight=<default>); block diamond(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real ds=<default>, real dw=<default>, real height=<default>, real minwidth=<default>, real minheight=<default>); -block rectangle(object header, object body, pair center=<default>, pen headerpen=<default>, pen bodypen=<default>, pen drawpen=<default>, real dx=<default>, real minheaderwidth=<default>, real minheaderheight=<default>, real minbodywidth=<default>, real minbodyheight=<default>); -block rectangle(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real dx=<default>, real minwidth=<default>, real minheight=<default>); -real defaultexcursion; +real mincirclediameter; real minblockheight; -flowdir Vertical; +Dir Up; Dir Right; real minblockwidth; -flowdir Horizontal; -real mincirclediameter; -block blockconnector(block, block)(picture pic, transform t, pen p=<default>, marginT margin(path, pen)=<default>); -Dir Left; +block circle(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real dr=<default>, real mindiameter=<default>); block operator --(block b1, Label label); block operator --(block b1, Dir dir); block operator --(block b, bool arrowbar(picture, path, pen, marginT(path, pen))); -void draw(picture pic=<default>, block block, pen p=<default>); +block rectangle(object header, object body, pair center=<default>, pen headerpen=<default>, pen bodypen=<default>, pen drawpen=<default>, real dx=<default>, real minheaderwidth=<default>, real minheaderheight=<default>, real minbodywidth=<default>, real minbodyheight=<default>); +block rectangle(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real dx=<default>, real minwidth=<default>, real minheight=<default>); flowdir operator init(); block operator init(); Dir operator init(); +flowdir Vertical; +path path(pair[] point ... flowdir[] dir); +void draw(picture pic=<default>, block block, pen p=<default>); +block blockconnector(block, block)(picture pic, transform t, pen p=<default>, marginT margin(path, pen)=<default>); block parallelogram(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real dx=<default>, real slope=<default>, real minwidth=<default>, real minheight=<default>); -block circle(object body, pair center=<default>, pen fillpen=<default>, pen drawpen=<default>, real dr=<default>, real mindiameter=<default>); -path compassmark(pair O, pair A, real position, real angle=<default>); -arc arcsubtended(point A, point B, real angle); +flowdir Horizontal; +real defaultexcursion; +arc arccircle(point A, point M, point B); +arc arccircle(point A, point B, real angle, bool direction=<default>); void lineinversion(); line radicalline(circle c1, circle c2); +point radicalcenter(circle c1, circle c2); +point radicalcenter(circle c1, circle c2, circle c3); point inverse(real k, point A, point M); circle inverse(real k, point A, line l); circle inverse(real k, point A, circle c); arc inverse(real k, point A, segment s); triangle anticomplementary(triangle t); -triangle incentral(triangle t); +triangle symmedial(triangle t); +triangle orthic(triangle t); +triangle medial(triangle t); +point intouch(side side); +triangle intouch(triangle t); triangle extouch(triangle t); triangle extouch(side side); +triangle pedal(triangle t, point M); +line pedal(side side, point M); +point isogonal(side side, point M); +line isogonal(vertex V, point M); +triangle isogonal(triangle t, point M); +point isogonalconjugate(triangle t, point M); point isotomicconjugate(triangle t, point M); point[] fermat(triangle t); -point gergonne(triangle t); triangle cevian(triangle t, point P); point cevian(side side, point P); line cevian(vertex V, point P); -line altitude(vertex V); -line altitude(side side); -point foot(vertex V); -point foot(side side); -triangle triangleabc(real a, real b, real c, real angle=<default>, point A=<default>); -side opposite(vertex V); -vertex opposite(side side); -circle excircle(point A, point B, point C); -circle excircle(side side); -void markarc(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, arc a, pen sectorpen=<default>, pen markpen=<default>, marginT margin(path, pen)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marker marker=<default>); -point ppoint(arc a, real x); -int arcnodesnumber(explicit arc a); -path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)(conic co); -point curpoint(line l, real x); -point curpoint(explicit circle c, real x); -point curpoint(explicit ellipse el, real x); -point curpoint(explicit parabola p, real x); -point curpoint(conic co, real x); -point curpoint(arc a, real x); -abscissa relabscissa(real x); -abscissa relabscissa(int x); -abscissa relabscissa(line l, point M); -abscissa relabscissa(circle c, point M); -abscissa relabscissa(ellipse el, point M); -abscissa relabscissa(conic co, point M); -abscissa relabscissa(arc a, point M); -int angularsystem; -real arclength(circle c); -real arclength(ellipse el); -real arclength(ellipse el, real angle1, real angle2, bool direction=<default>, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); -real arclength(parabola p, real angle); -real arclength(parabola p, real angle1, real angle2); -real arclength(parabola p); -real arclength(arc a); -string conictype(bqe bqe); -point circumcenter(point A, point B, point C); -point circumcenter(triangle t); -parabola parabola(point F, line l); -parabola parabola(point F, point vertex); -parabola parabola(point F, real a, real angle); -parabola parabola(bqe bqe); -parabola parabola(point M1, point M2, point M3, line l); -parabola parabola(point M1, point M2, point M3, point M4, point M5); -point angpoint(conic co, real angle); -point angpoint(explicit circle c, real x); -point angpoint(explicit ellipse el, real x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); -point angpoint(explicit parabola p, real x); -point angpoint(explicit hyperbola h, real x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); -point angpoint(arc a, real angle); -path currentpolarconicroutine(conic co, real angle1, real angle2, int n, bool direction); -int hyperbolanodesnumber(hyperbola h, real angle1, real angle2); -int hyperbolanodesnumberfactor; -int parabolanodesnumber(parabola p, real angle1, real angle2); -int ellipsenodesnumberfactor; -int circlenodesnumber(real r); -int circlenodesnumber(real r, real angle1, real angle2); -conic conic(point F, line l, real e); -conic conic(point M1, point M2, point M3, point M4, point M5); -conic conic(bqe bqe); -bool degenerate(conic c); -bool degenerate(circle c); -bool degenerate(ellipse el); -real[] realquarticroots(real a, real b, real c, real d, real e); -path arcfromfocus(conic co, real angle1, real angle2, int n=<default>, bool direction=<default>); -line sector(int n=<default>, int p=<default>, line l1, line l2, real angle=<default>, bool sharp=<default>); -line bisector(line l1, line l2, real angle=<default>, bool sharp=<default>); -line bisector(point A, point B, point C, point D, real angle=<default>, bool sharp=<default>); -line bisector(segment s, real angle=<default>); -line bisector(point A, point B, real angle=<default>); -line bisector(vertex V, real angle=<default>); -line bisector(side side); -real sharpangle(line l1, line l2); -line perpendicular(point M, line l); -line perpendicular(point M, explicit vector normal); -line perpendicular(point M, explicit pair normal); -bool perpendicular(line l1, line l2); -void perpendicular(picture pic=<default>, pair z, pair align, pair dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -void perpendicular(picture pic=<default>, pair z, pair align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -transform vprojection(line l, bool safe=<default>); -bool concurrent(... line[] l); -line parallel(point M, line l); -line parallel(point M, explicit vector dir); -line parallel(point M, explicit pair dir); -bool parallel(line l1, line l2, bool strictly=<default>); -transform reflect(line l); -transform reflect(line l1, line l2, bool safe=<default>); -line Ox(coordsys R=<default>); -line Ox; -line extend(line l); -line line(point A, bool extendA=<default>, point B, bool extendB=<default>); -line line(segment s); -line line(real a, point A=<default>); -line line(point A=<default>, real a); -line line(int a, point A=<default>); -line line(coordsys R=<default>, real slope, real origin); -line line(coordsys R=<default>, real a, real b, real c); -line line(circle c); -line line(explicit side side); -pair attract(pair m, path g, real fuzz=<default>); -point attract(point M, path g, real fuzz=<default>); -bool simeq(point A, point B, real fuzz=<default>); -bool simeq(point a, real b, real fuzz=<default>); -void clipdraw(picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, real xmargin=<default>, real ymargin=<default>, Label legend=<default>, marker marker=<default>); -void Drawline(picture pic=<default>, Label L=<default>, pair P, bool dirP=<default>, pair Q, bool dirQ=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); -path NoModifier(path); -bool between(point M, point O, point N); -int sgnd(real x); -int sgnd(int x); -pen addpenline; -pen addpenline(pen p); -real linemargin; -real linemargin(); -point origin; -point origin(coordsys R=<default>); -vector unit(point M); -vector unit(vector u); -bool collinear(vector u, vector v); -vector vector(coordsys R=<default>, pair v); -vector vector(point M); -transform scaleO(real x); -transform yscale(real k, point M); -point conj(explicit point M); -vector conj(explicit vector u); -hyperbola conj(hyperbola h); -real length(explicit point M); -real length(segment s); -real abs(coordsys R, pair m); -real abs(explicit point M); -pair locate(point P); -point locate(pair p); -pair locate(explicit vector v); -bool samecoordsys(bool warn=<default> ... point[] M); -bool samecoordsys(bool warn=<default> ... bqe[] bqes); -pair coordinates(point M); -point changecoordsys(coordsys R, point M); -vector changecoordsys(coordsys R, vector v); -line changecoordsys(coordsys R, line l); -bqe changecoordsys(coordsys R, bqe bqe); -conic changecoordsys(coordsys R, conic co); -coordsys currentcoordsys; -pair operator /(pair p, coordsys R); -point operator /(explicit point P, real x); -point operator /(real x, explicit point P); -vector operator /(explicit vector v, real x); -line operator /(line l, real x); -line operator /(line l, int x); -circle operator /(explicit circle c, real x); -circle operator /(explicit circle c, int x); -ellipse operator /(ellipse el, real x); -abscissa operator /(real x, explicit abscissa a); -abscissa operator /(explicit abscissa a, real x); -abscissa operator /(int x, explicit abscissa a); -arc operator /(explicit arc a, real x); -mass operator /(explicit mass M, real x); -mass operator /(explicit mass M, int x); -void show(picture pic=<default>, Label lo=<default>, Label li=<default>, Label lj=<default>, coordsys R, pen dotpen=<default>, pen xpen=<default>, pen ypen=<default>, pen ipen=<default>, pen jpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); -void show(Label L, vector v, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); -void show(picture pic=<default>, line l, pen p=<default>); -void show(picture pic=<default>, Label LA=<default>, Label LB=<default>, Label LC=<default>, Label La=<default>, Label Lb=<default>, Label Lc=<default>, triangle t, pen p=<default>, filltype filltype=<default>); -coordsys cartesiansystem(pair O=<default>, pair i, pair j); -real binomial(real n, real k); -real approximate(real t); -real[] approximate(real[] T); -real epsgeo; -transform rotate(explicit pair dir); -transform rotate(explicit vector dir); -transform rotate(explicit point dir); -bool isparabola(bqe bqe); -real sharpdegrees(line l1, line l2); -void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit pair align=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>); -void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit vector align, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>); -real exradius(point A, point B, point C); -real exradius(side side); -triangle orthic(triangle t); -path square(pair z1, pair z2); -line Oy(coordsys R=<default>); -line Oy; -inversion inversion(real k, point C); -inversion inversion(point C, real k); -inversion inversion(circle c1, circle c2, real sgn=<default>); -inversion inversion(circle c1, circle c2, circle c3); -inversion inversion(circle c); -void drawline(picture pic=<default>, triangle t, pen p=<default>); -real operator ^(point M, explicit circle c); -segment segment(point A, point B); -segment segment(line l); -segment segment(explicit side side); -path fromCenter(conic co, real angle1, real angle2, int n, bool direction); -circle circumcircle(point A, point B, point C); -circle circumcircle(triangle t); -triangle symmedial(triangle t); -int curvilinearsystem; -bqe bqe(coordsys R=<default>, real a, real b, real c, real d, real e, real f); -bqe bqe(point M1, point M2, point M3, point M4, point M5); -real focusToCenter(ellipse el, real a); -point radicalcenter(circle c1, circle c2); -point radicalcenter(circle c1, circle c2, circle c3); point symmedian(triangle t); point symmedian(side side); line symmedian(vertex V); -string defaultmassformat; -real angle(explicit point M, coordsys R=<default>, bool warn=<default>); -real angle(explicit vector v, coordsys R=<default>, bool warn=<default>); -real angle(line l, coordsys R=<default>); -real angle(line l1, line l2); -real angle(arc a); -real degrees(explicit point M, coordsys R=<default>, bool warn=<default>); -real degrees(vector v, coordsys R=<default>, bool warn=<default>); -real degrees(line l, coordsys R=<default>); -real degrees(line l1, line l2); -real degrees(arc a); -bqe canonical(bqe bqe); -point arcsubtendedcenter(point A, point B, real angle); -transform rotateO(real a); -point centroid(point A, point B, point C); -point centroid(triangle t); -coordsys coordsys(line l); -coordsys coordsys(conic co); -coordsys coordsys(ellipse el); -void markrightangle(picture pic=<default>, point A, point O, point B, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -line complementary(explicit line l); -line[] complementary(explicit segment s); -arc complementary(arc a); -triangle triangle(line l1, line l2, line l3); -int nodesystem; -bool byvertices; -transform scale(real k, point M); -transform scale(real k, point A, point B, point C, point D, bool safe=<default>); -transform scale(real k, line l1, line l2, bool safe=<default>); -point operator -(explicit point P); -point operator -(explicit point P1, explicit point P2); -point operator -(explicit point P1, explicit pair p2); -point operator -(explicit pair p1, explicit point P2); -point operator -(point M, explicit vector v); -vector operator -(explicit vector v); -point operator -(explicit pair m, explicit vector v); -vector operator -(explicit vector v1, explicit vector v2); -line operator -(line l, vector u); -conic operator -(conic c, explicit point M); -conic operator -(conic c, explicit pair m); -conic operator -(conic c, vector v); -circle operator -(explicit circle c, explicit point M); -circle operator -(explicit circle c, pair m); -circle operator -(explicit circle c, vector m); -abscissa operator -(explicit abscissa a); -abscissa operator -(real x, explicit abscissa a); -abscissa operator -(explicit abscissa a, real x); -abscissa operator -(int x, explicit abscissa a); -arc operator -(explicit arc a, point M); -arc operator -(explicit arc a, vector v); -mass operator -(mass M1, mass M2); -mass operator -(explicit mass M, real x); -mass operator -(explicit mass M, int x); -real inradius(point A, point B, point C); -real inradius(triangle t); -int conicnodesnumber(conic co, real angle1, real angle2, bool dir=<default>); -int parabolanodesnumberfactor; -arc arc(ellipse el, real angle1, real angle2, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>, bool direction=<default>); -arc arc(ellipse el, explicit abscissa x1, explicit abscissa x2, bool direction=<default>); -arc arc(ellipse el, point M, point N, bool direction=<default>); -arc arc(explicit arc a, abscissa x1, abscissa x2); -arc arc(explicit arc a, point M, point N); -path arc(explicit pair B, explicit pair A, explicit pair C, real r); -mass masscenter(... mass[] M); -bool finite(explicit point p); -bool defined(point P); -int conicnodesfactor; -coordsys canonicalcartesiansystem(ellipse el); -coordsys canonicalcartesiansystem(parabola p); -coordsys canonicalcartesiansystem(hyperbola h); -coordsys canonicalcartesiansystem(explicit conic co); -int ellipsenodesnumber(real a, real b); -int ellipsenodesnumber(real a, real b, real angle1, real angle2, bool dir); -bool sameside(point M, point N, point O); -bool sameside(point M, point P, line l); -point[] sameside(point M, line l1, line l2); -void addMargins(picture pic=<default>, real lmargin=<default>, real bmargin=<default>, real rmargin=<default>, real tmargin=<default>, bool rigid=<default>, bool allObject=<default>); -point intersectionpoint(line l1, line l2); -line[] operator ^^(line l1, line l2); -line[] operator ^^(line l1, line[] l2); -line[] operator ^^(line[] l2, line l1); -line[] operator ^^(line[] l1, line[] l2); -triangle[] operator ^^(triangle[] t1, triangle t2); -triangle[] operator ^^(... triangle[] t); -point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M); +transform projection(point A, point B); +transform projection(point A, point B, point C, point D, bool safe=<default>); +transform projection(line l); +transform projection(line l1, line l2, bool safe=<default>); real EPS; -abscissa angabscissa(real x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); -abscissa angabscissa(int x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); -abscissa angabscissa(circle c, point M); -abscissa angabscissa(ellipse el, point M, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); -abscissa angabscissa(hyperbola h, point M, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); -abscissa angabscissa(parabola p, point M); -abscissa angabscissa(explicit conic co, point M); -abscissa angabscissa(arc a, point M); -real perpfactor; -void distance(picture pic=<default>, Label L=<default>, point A, point B, bool rotated=<default>, real offset=<default>, pen p=<default>, pen joinpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); -real distance(point M, line l); -real distance(line l, point M); -point midpoint(segment s); -point midpoint(side side); -transform xscaleO(real x); +bqe canonical(bqe bqe); pair operator *(coordsys R, pair p); path operator *(coordsys R, path g); coordsys operator *(transform t, coordsys R); @@ -2500,110 +2222,51 @@ circle operator *(inversion i, line l); circle operator *(inversion i, circle c); arc operator *(inversion i, segment s); path operator *(inversion i, triangle t); -point operator +(explicit point P1, explicit point P2); -point operator +(explicit point P1, explicit pair p2); -point operator +(explicit pair p1, explicit point p2); -point operator +(point M, explicit vector v); -point operator +(explicit pair m, explicit vector v); -vector operator +(explicit vector v1, explicit vector v2); -line operator +(line l, vector u); -conic operator +(conic c, explicit point M); -conic operator +(conic c, explicit pair m); -conic operator +(conic c, vector v); -circle operator +(explicit circle c, explicit point M); -circle operator +(explicit circle c, pair m); -circle operator +(explicit circle c, vector m); -abscissa operator +(real x, explicit abscissa a); -abscissa operator +(explicit abscissa a, real x); -abscissa operator +(int x, explicit abscissa a); -arc operator +(explicit arc a, point M); -arc operator +(explicit arc a, vector v); -mass operator +(mass M1, mass M2); -mass operator +(explicit mass M, real x); -mass operator +(explicit mass M, int x); -circle incircle(point A, point B, point C); -circle incircle(triangle t); -bool operator @(point m, line l); -bool operator @(point M, conic co); -bool operator @(point M, explicit circle c); -bool operator @(point M, arc a); -triangle triangleAbc(real alpha, real b, real c, real angle=<default>, point A=<default>); -real elle(real phi, real k); -trilinear trilinear(triangle t, real a, real b, real c); -trilinear trilinear(triangle t, point M); -trilinear trilinear(triangle t, real f(real, real, real), real a=<default>, real b=<default>, real c=<default>); -point bisectorpoint(side side); +abscissa angabscissa(real x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); +abscissa angabscissa(int x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); +abscissa angabscissa(circle c, point M); +abscissa angabscissa(ellipse el, point M, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); +abscissa angabscissa(hyperbola h, point M, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); +abscissa angabscissa(parabola p, point M); +abscissa angabscissa(explicit conic co, point M); +abscissa angabscissa(arc a, point M); +point arcsubtendedcenter(point A, point B, real angle); +inversion inversion(real k, point C); +inversion inversion(point C, real k); +inversion inversion(circle c1, circle c2, real sgn=<default>); +inversion inversion(circle c1, circle c2, circle c3); +inversion inversion(circle c); +path compassmark(pair O, pair A, real position, real angle=<default>); +path square(pair z1, pair z2); +real[] bangles(picture pic=<default>, parabola p); +real[][] bangles(picture pic=<default>, hyperbola h); +vector vector(coordsys R=<default>, pair v); +vector vector(point M); +void clipdraw(picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, real xmargin=<default>, real ymargin=<default>, Label legend=<default>, marker marker=<default>); line median(vertex V); line median(side side); -abscissa curabscissa(real x); -abscissa curabscissa(int x); -abscissa curabscissa(line l, point M); -abscissa curabscissa(circle c, point M); -abscissa curabscissa(ellipse el, point M); -abscissa curabscissa(parabola p, point M); -abscissa curabscissa(conic co, point M); -abscissa curabscissa(arc a, point M); -void draw(picture pic=<default>, Label L=<default>, line l, bool dirA=<default>, bool dirB=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); -void draw(picture pic=<default>, Label[] L=<default>, line[] l, align align=<default>, pen[] p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label[] legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); -void draw(picture pic=<default>, Label[] L=<default>, line[] l, align align=<default>, pen p, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label[] legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); -void draw(picture pic=<default>, Label L=<default>, circle c, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); -void draw(picture pic=<default>, Label L=<default>, ellipse el, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); -void draw(picture pic=<default>, Label L=<default>, parabola parabola, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); -void draw(picture pic=<default>, Label L=<default>, hyperbola h, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); -void draw(picture pic=<default>, Label L=<default>, explicit conic co, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); -void draw(picture pic=<default>, Label L=<default>, arc a, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); -void draw(picture pic=<default>, triangle t, pen p=<default>, marker marker=<default>); -void draw(picture pic=<default>, triangle[] t, pen p=<default>, marker marker=<default>); -pair[] intersectionpoints(pair A, pair B, real a, real b, real c, real d, real f, real g); -pair[] intersectionpoints(pair A, pair B, real[] equation); -point[] intersectionpoints(line l, path g); -point[] intersectionpoints(bqe bqe1, bqe bqe2); -point[] intersectionpoints(triangle t, line l, bool extended=<default>); -point[] intersectionpoints(line l, triangle t, bool extended=<default>); -point[] intersectionpoints(line l, circle c); -point[] intersectionpoints(circle c, line l); -point[] intersectionpoints(line l, ellipse el); -point[] intersectionpoints(ellipse el, line l); -point[] intersectionpoints(line l, parabola p); -point[] intersectionpoints(parabola p, line l); -point[] intersectionpoints(line l, hyperbola h); -point[] intersectionpoints(hyperbola h, line l); -point[] intersectionpoints(line l, conic co); -point[] intersectionpoints(conic co, line l); -point[] intersectionpoints(conic co1, conic co2); -point[] intersectionpoints(triangle t, conic co, bool extended=<default>); -point[] intersectionpoints(conic co, triangle t, bool extended=<default>); -point[] intersectionpoints(ellipse a, ellipse b); -point[] intersectionpoints(ellipse a, circle b); -point[] intersectionpoints(circle a, ellipse b); -point[] intersectionpoints(ellipse a, parabola b); -point[] intersectionpoints(parabola a, ellipse b); -point[] intersectionpoints(ellipse a, hyperbola b); -point[] intersectionpoints(hyperbola a, ellipse b); -point[] intersectionpoints(circle a, parabola b); -point[] intersectionpoints(parabola a, circle b); -point[] intersectionpoints(circle a, hyperbola b); -point[] intersectionpoints(hyperbola a, circle b); -point[] intersectionpoints(parabola a, parabola b); -point[] intersectionpoints(parabola a, hyperbola b); -point[] intersectionpoints(hyperbola a, parabola b); -point[] intersectionpoints(hyperbola a, hyperbola b); -point[] intersectionpoints(circle c1, circle c2); -point[] intersectionpoints(conic co, arc a); -point[] intersectionpoints(arc a, conic co); -point[] intersectionpoints(arc a1, arc a2); -point[] intersectionpoints(line l, arc a); -point[] intersectionpoints(arc a, line l); -arc arccircle(point A, point M, point B); -arc arccircle(point A, point B, real angle, bool direction=<default>); -point relpoint(line l, real x); -point relpoint(explicit circle c, real x); -point relpoint(explicit ellipse el, real x); -point relpoint(explicit parabola p, real x); -point relpoint(explicit hyperbola h, real x); -point relpoint(explicit conic co, explicit real x); -point relpoint(explicit conic co, explicit int x); -point relpoint(arc a, real x); +real arclength(circle c); +real arclength(ellipse el); +real arclength(ellipse el, real angle1, real angle2, bool direction=<default>, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); +real arclength(parabola p, real angle); +real arclength(parabola p, real angle1, real angle2); +real arclength(parabola p); +real arclength(arc a); +bool degenerate(conic c); +bool degenerate(circle c); +bool degenerate(ellipse el); +void perpendicularmark(picture pic=<default>, point z, explicit pair align, explicit pair dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +void perpendicularmark(picture pic=<default>, point z, vector align, vector dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +void perpendicularmark(picture pic=<default>, point z, explicit pair align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +void perpendicularmark(picture pic=<default>, point z, vector align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +void perpendicularmark(picture pic=<default>, line l1, line l2, real size=<default>, pen p=<default>, int quarter=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +void markrightangle(picture pic=<default>, point A, point O, point B, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +line sector(int n=<default>, int p=<default>, line l1, line l2, real angle=<default>, bool sharp=<default>); +line hline(coordsys R=<default>); +line hline; +circle incircle(point A, point B, point C); +circle incircle(triangle t); +real binomial(real n, real k); point point(coordsys R, pair p, real m=<default>); point point(explicit pair p, real m); point point(coordsys R, explicit point M, real m=<default>); @@ -2634,61 +2297,54 @@ point point(explicit vertex V); point point(trilinear tri); point point(circle c, point M); point point(circle c, explicit vector v); -line reverse(line l); -arc reverse(arc a); -bool operator !=(explicit point M, explicit point N); -bool operator !=(line l1, line l2); -int[] numarray; +point bisectorpoint(side side); +transform scale(real k, point M); +transform scale(real k, point A, point B, point C, point D, bool safe=<default>); +transform scale(real k, line l1, line l2, bool safe=<default>); +point angpoint(conic co, real angle); +point angpoint(explicit circle c, real x); +point angpoint(explicit ellipse el, real x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); +point angpoint(explicit parabola p, real x); +point angpoint(explicit hyperbola h, real x, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>); +point angpoint(arc a, real angle); +string conictype(bqe bqe); bool operator ==(coordsys c1, coordsys c2); bool operator ==(explicit point M, explicit point N); bool operator ==(explicit vector u, explicit vector v); bool operator ==(line l1, line l2); +mass masscenter(... mass[] M); +triangle triangleAbc(real alpha, real b, real c, real angle=<default>, point A=<default>); +bool operator !=(explicit point M, explicit point N); +bool operator !=(line l1, line l2); +arc arcsubtended(point A, point B, real angle); +vector unit(point M); +vector unit(vector u); +transform reflect(line l); +transform reflect(line l1, line l2, bool safe=<default>); +real sharpdegrees(line l1, line l2); +int ellipsenodesnumberfactor; +real degrees(explicit point M, coordsys R=<default>, bool warn=<default>); +real degrees(vector v, coordsys R=<default>, bool warn=<default>); +real degrees(line l, coordsys R=<default>); +real degrees(line l1, line l2); +real degrees(arc a); +point foot(vertex V); +point foot(side side); point excenter(point A, point B, point C); point excenter(side side); -mass mass(point M, real m); -mass mass(explicit point P); -mass mass(coordsys R, explicit pair p, real m); -transform yscaleO(real x); -coordsys operator init(); -point operator init(); -vector operator init(); -line operator init(); -segment operator init(); -bqe operator init(); -conic operator init(); -circle operator init(); -ellipse operator init(); -parabola operator init(); -hyperbola operator init(); -abscissa operator init(); -arc operator init(); -mass operator init(); -triangle operator init(); -trilinear operator init(); -inversion operator init(); -point isogonal(side side, point M); -line isogonal(vertex V, point M); -triangle isogonal(triangle t, point M); -bqe equation(ellipse el); -bqe equation(parabola p); -bqe equation(hyperbola h); -bqe equation(explicit conic co); -void dot(picture pic=<default>, Label L, explicit point Z, align align=<default>, string format=<default>, pen p=<default>); -real dot(point A, point B); -real dot(point A, explicit pair B); -real dot(explicit pair A, point B); -void dot(picture pic=<default>, Label L, explicit mass M, align align=<default>, string format=<default>, pen p=<default>); -void dot(picture pic=<default>, triangle t, pen p=<default>); -triangle antipedal(triangle t, point M); -line tangent(circle c, abscissa x); -line tangent(circle c, point M); -line tangent(circle c, explicit vector v); -line tangent(ellipse el, abscissa x); -line tangent(parabola p, abscissa x); -line tangent(hyperbola h, abscissa x); -line tangent(explicit arc a, abscissa x); -line tangent(explicit arc a, point M); -bool byfoci; +triangle incentral(triangle t); +point origin; +point origin(coordsys R=<default>); +string massformat(string format=<default>, string s, mass M); +void write(explicit line l); +void write(explicit segment s); +void write(trilinear tri); +line isotomic(vertex V, point M); +point isotomic(side side, point M); +triangle isotomic(triangle t, point M); +transform hprojection(line l, bool safe=<default>); +point midpoint(segment s); +point midpoint(side side); pair operator cast(point P); pair[] operator cast(point[] P); point operator cast(pair p); @@ -2734,293 +2390,667 @@ point operator cast(vertex V); point operator cast(trilinear tri); circle operator cast(inversion i); inversion operator cast(circle c); -path arcfromcenter(ellipse el, real angle1, real angle2, bool direction=<default>, int n=<default>); -path arcfromcenter(hyperbola h, real angle1, real angle2, int n=<default>, bool direction=<default>); -path arcfromcenter(explicit conic co, real angle1, real angle2, int n, bool direction=<default>); -line vline(coordsys R=<default>); -line vline; -line isotomic(vertex V, point M); -point isotomic(side side, point M); -triangle isotomic(triangle t, point M); -line[] tangents(circle c, point M); -line[] tangents(ellipse el, point M); -line[] tangents(parabola p, point M); -line[] tangents(hyperbola h, point M); -point isogonalconjugate(triangle t, point M); -real centerToFocus(ellipse el, real a); +point curpoint(line l, real x); +point curpoint(explicit circle c, real x); +point curpoint(explicit ellipse el, real x); +point curpoint(explicit parabola p, real x); +point curpoint(conic co, real x); +point curpoint(arc a, real x); +point relpoint(line l, real x); +point relpoint(explicit circle c, real x); +point relpoint(explicit ellipse el, real x); +point relpoint(explicit parabola p, real x); +point relpoint(explicit hyperbola h, real x); +point relpoint(explicit conic co, explicit real x); +point relpoint(explicit conic co, explicit int x); +point relpoint(arc a, real x); +bool collinear(vector u, vector v); +bool between(point M, point O, point N); +void draw(picture pic=<default>, Label L=<default>, line l, bool dirA=<default>, bool dirB=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); +void draw(picture pic=<default>, Label[] L=<default>, line[] l, align align=<default>, pen[] p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label[] legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); +void draw(picture pic=<default>, Label[] L=<default>, line[] l, align align=<default>, pen p, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label[] legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); +void draw(picture pic=<default>, Label L=<default>, circle c, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); +void draw(picture pic=<default>, Label L=<default>, ellipse el, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); +void draw(picture pic=<default>, Label L=<default>, parabola parabola, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); +void draw(picture pic=<default>, Label L=<default>, hyperbola h, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); +void draw(picture pic=<default>, Label L=<default>, explicit conic co, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); +void draw(picture pic=<default>, Label L=<default>, arc a, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>); +void draw(picture pic=<default>, triangle t, pen p=<default>, marker marker=<default>); +void draw(picture pic=<default>, triangle[] t, pen p=<default>, marker marker=<default>); +int parabolanodesnumber(parabola p, real angle1, real angle2); +line complementary(explicit line l); +line[] complementary(explicit segment s); +arc complementary(arc a); +pair coordinates(point M); +int circlenodesnumberfactor; +coordsys operator init(); +point operator init(); +vector operator init(); +line operator init(); +segment operator init(); +bqe operator init(); +conic operator init(); +circle operator init(); +ellipse operator init(); +parabola operator init(); +hyperbola operator init(); +abscissa operator init(); +arc operator init(); +mass operator init(); +triangle operator init(); +trilinear operator init(); +inversion operator init(); +triangle triangle(line l1, line l2, line l3); +transform vprojection(line l, bool safe=<default>); +circle circumcircle(point A, point B, point C); +circle circumcircle(triangle t); pen addpenarc; pen addpenarc(pen p); -int[] tricoef(side side); -void perpendicularmark(picture pic=<default>, point z, explicit pair align, explicit pair dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -void perpendicularmark(picture pic=<default>, point z, vector align, vector dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -void perpendicularmark(picture pic=<default>, point z, explicit pair align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -void perpendicularmark(picture pic=<default>, point z, vector align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -void perpendicularmark(picture pic=<default>, line l1, line l2, real size=<default>, pen p=<default>, int quarter=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); -real[] intersect(path g, explicit pair p, real fuzz=<default>); -real[] intersect(path g, explicit point P, real fuzz=<default>); -point incenter(point A, point B, point C); -point incenter(triangle t); -void write(explicit line l); -void write(explicit segment s); -void write(trilinear tri); -path arctopath(arc a, int n); +line reverse(line l); +arc reverse(arc a); +line vline(coordsys R=<default>); +line vline; +pair[] intersectionpoints(pair A, pair B, real a, real b, real c, real d, real f, real g); +pair[] intersectionpoints(pair A, pair B, real[] equation); +point[] intersectionpoints(line l, path g); +point[] intersectionpoints(bqe bqe1, bqe bqe2); +point[] intersectionpoints(triangle t, line l, bool extended=<default>); +point[] intersectionpoints(line l, triangle t, bool extended=<default>); +point[] intersectionpoints(line l, circle c); +point[] intersectionpoints(circle c, line l); +point[] intersectionpoints(line l, ellipse el); +point[] intersectionpoints(ellipse el, line l); +point[] intersectionpoints(line l, parabola p); +point[] intersectionpoints(parabola p, line l); +point[] intersectionpoints(line l, hyperbola h); +point[] intersectionpoints(hyperbola h, line l); +point[] intersectionpoints(line l, conic co); +point[] intersectionpoints(conic co, line l); +point[] intersectionpoints(conic co1, conic co2); +point[] intersectionpoints(triangle t, conic co, bool extended=<default>); +point[] intersectionpoints(conic co, triangle t, bool extended=<default>); +point[] intersectionpoints(ellipse a, ellipse b); +point[] intersectionpoints(ellipse a, circle b); +point[] intersectionpoints(circle a, ellipse b); +point[] intersectionpoints(ellipse a, parabola b); +point[] intersectionpoints(parabola a, ellipse b); +point[] intersectionpoints(ellipse a, hyperbola b); +point[] intersectionpoints(hyperbola a, ellipse b); +point[] intersectionpoints(circle a, parabola b); +point[] intersectionpoints(parabola a, circle b); +point[] intersectionpoints(circle a, hyperbola b); +point[] intersectionpoints(hyperbola a, circle b); +point[] intersectionpoints(parabola a, parabola b); +point[] intersectionpoints(parabola a, hyperbola b); +point[] intersectionpoints(hyperbola a, parabola b); +point[] intersectionpoints(hyperbola a, hyperbola b); +point[] intersectionpoints(circle c1, circle c2); +point[] intersectionpoints(conic co, arc a); +point[] intersectionpoints(arc a, conic co); +point[] intersectionpoints(arc a1, arc a2); +point[] intersectionpoints(line l, arc a); +point[] intersectionpoints(arc a, line l); +line tangent(circle c, abscissa x); +line tangent(circle c, point M); +line tangent(circle c, explicit vector v); +line tangent(ellipse el, abscissa x); +line tangent(parabola p, abscissa x); +line tangent(hyperbola h, abscissa x); +line tangent(explicit arc a, abscissa x); +line tangent(explicit arc a, point M); +void drawline(picture pic=<default>, triangle t, pen p=<default>); bool inside(ellipse el, point M); bool inside(parabola p, point M); +side opposite(vertex V); +vertex opposite(side side); +line[] operator ^^(line l1, line l2); +line[] operator ^^(line l1, line[] l2); +line[] operator ^^(line[] l2, line l1); +line[] operator ^^(line[] l1, line[] l2); +triangle[] operator ^^(triangle[] t1, triangle t2); +triangle[] operator ^^(... triangle[] t); +point operator +(explicit point P1, explicit point P2); +point operator +(explicit point P1, explicit pair p2); +point operator +(explicit pair p1, explicit point p2); +point operator +(point M, explicit vector v); +point operator +(explicit pair m, explicit vector v); +vector operator +(explicit vector v1, explicit vector v2); +line operator +(line l, vector u); +conic operator +(conic c, explicit point M); +conic operator +(conic c, explicit pair m); +conic operator +(conic c, vector v); +circle operator +(explicit circle c, explicit point M); +circle operator +(explicit circle c, pair m); +circle operator +(explicit circle c, vector m); +abscissa operator +(real x, explicit abscissa a); +abscissa operator +(explicit abscissa a, real x); +abscissa operator +(int x, explicit abscissa a); +arc operator +(explicit arc a, point M); +arc operator +(explicit arc a, vector v); +mass operator +(mass M1, mass M2); +mass operator +(explicit mass M, real x); +mass operator +(explicit mass M, int x); +point intersectionpoint(line l1, line l2); +bool concurrent(... line[] l); void label(picture pic=<default>, Label L, explicit mass M, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>); void label(picture pic=<default>, Label L, vertex V, pair align=<default>, real alignFactor=<default>, pen p=<default>, filltype filltype=<default>); void label(picture pic=<default>, Label LA=<default>, Label LB=<default>, Label LC=<default>, triangle t, real alignAngle=<default>, real alignFactor=<default>, pen p=<default>, filltype filltype=<default>); -path fromFocus(conic co, real angle1, real angle2, int n, bool direction); -line hline(coordsys R=<default>); -line hline; -triangle tangential(triangle t); -triangle pedal(triangle t, point M); -line pedal(side side, point M); -string massformat(string format=<default>, string s, mass M); -coordsys defaultcoordsys; -point intouch(side side); -triangle intouch(triangle t); -point orthocentercenter(point A, point B, point C); -point orthocentercenter(triangle t); -real rf(real x, real y, real z); -abscissa nodabscissa(real x); -abscissa nodabscissa(int x); -abscissa nodabscissa(line l, point M); -abscissa nodabscissa(circle c, point M); -abscissa nodabscissa(ellipse el, point M); -abscissa nodabscissa(parabola p, point M); -abscissa nodabscissa(conic co, point M); -abscissa nodabscissa(arc a, point M); -int relativesystem; -real[] bangles(picture pic=<default>, parabola p); -real[][] bangles(picture pic=<default>, hyperbola h); -bool onpath(picture pic=<default>, path g, point M, pen p=<default>); -real rd(real x, real y, real z); -int circlenodesnumberfactor; -transform xscale(real k, point M); circle circle(explicit point C, real r); circle circle(point A, point B); circle circle(segment s); circle circle(point A, point B, point C); circle circle(triangle t); circle circle(inversion i); +transform yscale(real k, point M); +int sgnd(real x); +int sgnd(int x); +line line(point A, bool extendA=<default>, point B, bool extendB=<default>); +line line(segment s); +line line(real a, point A=<default>); +line line(point A=<default>, real a); +line line(int a, point A=<default>); +line line(coordsys R=<default>, real slope, real origin); +line line(coordsys R=<default>, real a, real b, real c); +line line(circle c); +line line(explicit side side); +point ppoint(arc a, real x); +arc arc(ellipse el, real angle1, real angle2, path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)=<default>, bool direction=<default>); +arc arc(ellipse el, explicit abscissa x1, explicit abscissa x2, bool direction=<default>); +arc arc(ellipse el, point M, point N, bool direction=<default>); +arc arc(explicit arc a, abscissa x1, abscissa x2); +arc arc(explicit arc a, point M, point N); +path arc(explicit pair B, explicit pair A, explicit pair C, real r); +point operator -(explicit point P); +point operator -(explicit point P1, explicit point P2); +point operator -(explicit point P1, explicit pair p2); +point operator -(explicit pair p1, explicit point P2); +point operator -(point M, explicit vector v); +vector operator -(explicit vector v); +point operator -(explicit pair m, explicit vector v); +vector operator -(explicit vector v1, explicit vector v2); +line operator -(line l, vector u); +conic operator -(conic c, explicit point M); +conic operator -(conic c, explicit pair m); +conic operator -(conic c, vector v); +circle operator -(explicit circle c, explicit point M); +circle operator -(explicit circle c, pair m); +circle operator -(explicit circle c, vector m); +abscissa operator -(explicit abscissa a); +abscissa operator -(real x, explicit abscissa a); +abscissa operator -(explicit abscissa a, real x); +abscissa operator -(int x, explicit abscissa a); +arc operator -(explicit arc a, point M); +arc operator -(explicit arc a, vector v); +mass operator -(mass M1, mass M2); +mass operator -(explicit mass M, real x); +mass operator -(explicit mass M, int x); +real[] realquarticroots(real a, real b, real c, real d, real e); +string defaultmassformat; +coordsys canonicalcartesiansystem(ellipse el); +coordsys canonicalcartesiansystem(parabola p); +coordsys canonicalcartesiansystem(hyperbola h); +coordsys canonicalcartesiansystem(explicit conic co); +point centroid(point A, point B, point C); +point centroid(triangle t); +hyperbola hyperbola(point P1, point P2, real ae, bool byfoci=<default>); +hyperbola hyperbola(point C, real a, real b, real angle=<default>); +hyperbola hyperbola(bqe bqe); +hyperbola hyperbola(point M1, point M2, point M3, point M4, point M5); +transform rotate(explicit pair dir); +transform rotate(explicit vector dir); +transform rotate(explicit point dir); +void addMargins(picture pic=<default>, real lmargin=<default>, real bmargin=<default>, real rmargin=<default>, real tmargin=<default>, bool rigid=<default>, bool allObject=<default>); ellipse ellipse(point F1, point F2, real a); ellipse ellipse(point F1, point F2, point M); ellipse ellipse(point C, real a, real b, real angle=<default>); ellipse ellipse(bqe bqe); ellipse ellipse(point M1, point M2, point M3, point M4, point M5); -triangle medial(triangle t); -transform projection(point A, point B); -transform projection(point A, point B, point C, point D, bool safe=<default>); -transform projection(line l); -transform projection(line l1, line l2, bool safe=<default>); -transform hprojection(line l, bool safe=<default>); +path fromCenter(conic co, real angle1, real angle2, int n, bool direction); +pen addpenline; +pen addpenline(pen p); +path polarconicroutine(conic co, real angle1, real angle2, int n, bool direction)(conic co); +abscissa nodabscissa(real x); +abscissa nodabscissa(int x); +abscissa nodabscissa(line l, point M); +abscissa nodabscissa(circle c, point M); +abscissa nodabscissa(ellipse el, point M); +abscissa nodabscissa(parabola p, point M); +abscissa nodabscissa(conic co, point M); +abscissa nodabscissa(arc a, point M); +transform xscale(real k, point M); +real[] intersect(path g, explicit pair p, real fuzz=<default>); +real[] intersect(path g, explicit point P, real fuzz=<default>); +point circumcenter(point A, point B, point C); +point circumcenter(triangle t); +line Ox(coordsys R=<default>); +line Ox; +real abs(coordsys R, pair m); +real abs(explicit point M); +trilinear trilinear(triangle t, real a, real b, real c); +trilinear trilinear(triangle t, point M); +trilinear trilinear(triangle t, real f(real, real, real), real a=<default>, real b=<default>, real c=<default>); vector dir(vertex V); -hyperbola hyperbola(point P1, point P2, real ae, bool byfoci=<default>); -hyperbola hyperbola(point C, real a, real b, real angle=<default>); -hyperbola hyperbola(bqe bqe); -hyperbola hyperbola(point M1, point M2, point M3, point M4, point M5); -path Circle(pair c, real r, int n=<default>); -real maxlength(pair a, pair b, int nx, int ny); -void errorbar(picture pic, pair z, pair dp, pair dm, pen p=<default>, real size=<default>); +real angle(explicit point M, coordsys R=<default>, bool warn=<default>); +real angle(explicit vector v, coordsys R=<default>, bool warn=<default>); +real angle(line l, coordsys R=<default>); +real angle(line l1, line l2); +real angle(arc a); +triangle tangential(triangle t); +real elle(real phi, real k); +point conj(explicit point M); +vector conj(explicit vector u); +hyperbola conj(hyperbola h); +mass mass(point M, real m); +mass mass(explicit point P); +mass mass(coordsys R, explicit pair p, real m); +line[] tangents(circle c, point M); +line[] tangents(ellipse el, point M); +line[] tangents(parabola p, point M); +line[] tangents(hyperbola h, point M); +segment segment(point A, point B); +segment segment(line l); +segment segment(explicit side side); +bool simeq(point A, point B, real fuzz=<default>); +bool simeq(point a, real b, real fuzz=<default>); +triangle triangleabc(real a, real b, real c, real angle=<default>, point A=<default>); +void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit pair align=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>); +void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit vector align, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>); +bool isparabola(bqe bqe); +real approximate(real t); +real[] approximate(real[] T); +coordsys defaultcoordsys; +real epsgeo; +real rf(real x, real y, real z); +point gergonne(triangle t); +int angularsystem; +abscissa curabscissa(real x); +abscissa curabscissa(int x); +abscissa curabscissa(line l, point M); +abscissa curabscissa(circle c, point M); +abscissa curabscissa(ellipse el, point M); +abscissa curabscissa(parabola p, point M); +abscissa curabscissa(conic co, point M); +abscissa curabscissa(arc a, point M); +real rd(real x, real y, real z); +coordsys cartesiansystem(pair O=<default>, pair i, pair j); +void show(picture pic=<default>, Label lo=<default>, Label li=<default>, Label lj=<default>, coordsys R, pen dotpen=<default>, pen xpen=<default>, pen ypen=<default>, pen ipen=<default>, pen jpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); +void show(Label L, vector v, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); +void show(picture pic=<default>, line l, pen p=<default>); +void show(picture pic=<default>, Label LA=<default>, Label LB=<default>, Label LC=<default>, Label La=<default>, Label Lb=<default>, Label Lc=<default>, triangle t, pen p=<default>, filltype filltype=<default>); +pair operator /(pair p, coordsys R); +point operator /(explicit point P, real x); +point operator /(real x, explicit point P); +vector operator /(explicit vector v, real x); +line operator /(line l, real x); +line operator /(line l, int x); +circle operator /(explicit circle c, real x); +circle operator /(explicit circle c, int x); +ellipse operator /(ellipse el, real x); +abscissa operator /(real x, explicit abscissa a); +abscissa operator /(explicit abscissa a, real x); +abscissa operator /(int x, explicit abscissa a); +arc operator /(explicit arc a, real x); +mass operator /(explicit mass M, real x); +mass operator /(explicit mass M, int x); +coordsys currentcoordsys; +point changecoordsys(coordsys R, point M); +vector changecoordsys(coordsys R, vector v); +line changecoordsys(coordsys R, line l); +bqe changecoordsys(coordsys R, bqe bqe); +conic changecoordsys(coordsys R, conic co); +bool samecoordsys(bool warn=<default> ... point[] M); +bool samecoordsys(bool warn=<default> ... bqe[] bqes); +point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M); +pair locate(point P); +point locate(pair p); +pair locate(explicit vector v); +real length(explicit point M); +real length(segment s); +conic conic(point F, line l, real e); +conic conic(point M1, point M2, point M3, point M4, point M5); +conic conic(bqe bqe); +transform rotateO(real a); +transform scaleO(real x); +transform xscaleO(real x); +line extend(line l); +transform yscaleO(real x); +real linemargin; +real linemargin(); +bool defined(point P); +triangle antipedal(triangle t, point M); +bool operator @(point m, line l); +bool operator @(point M, conic co); +bool operator @(point M, explicit circle c); +bool operator @(point M, arc a); +bool finite(explicit point p); +point orthocentercenter(point A, point B, point C); +point orthocentercenter(triangle t); +bool onpath(picture pic=<default>, path g, point M, pen p=<default>); +bool sameside(point M, point N, point O); +bool sameside(point M, point P, line l); +point[] sameside(point M, line l1, line l2); +path currentpolarconicroutine(conic co, real angle1, real angle2, int n, bool direction); +int ellipsenodesnumber(real a, real b); +int ellipsenodesnumber(real a, real b, real angle1, real angle2, bool dir); +path NoModifier(path); +void Drawline(picture pic=<default>, Label L=<default>, pair P, bool dirP=<default>, pair Q, bool dirQ=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, Label legend=<default>, marker marker=<default>, path pathModifier(path)=<default>); +void distance(picture pic=<default>, Label L=<default>, point A, point B, bool rotated=<default>, real offset=<default>, pen p=<default>, pen joinpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); +real distance(point M, line l); +real distance(line l, point M); +int hyperbolanodesnumberfactor; +real perpfactor; +pair attract(pair m, path g, real fuzz=<default>); +point attract(point M, path g, real fuzz=<default>); +point incenter(point A, point B, point C); +point incenter(triangle t); +coordsys coordsys(line l); +coordsys coordsys(conic co); +coordsys coordsys(ellipse el); +line Oy(coordsys R=<default>); +line Oy; +void dot(picture pic=<default>, Label L, explicit point Z, align align=<default>, string format=<default>, pen p=<default>); +real dot(point A, point B); +real dot(point A, explicit pair B); +real dot(explicit pair A, point B); +void dot(picture pic=<default>, Label L, explicit mass M, align align=<default>, string format=<default>, pen p=<default>); +void dot(picture pic=<default>, triangle t, pen p=<default>); +real centerToFocus(ellipse el, real a); +line parallel(point M, line l); +line parallel(point M, explicit vector dir); +line parallel(point M, explicit pair dir); +bool parallel(line l1, line l2, bool strictly=<default>); +line perpendicular(point M, line l); +line perpendicular(point M, explicit vector normal); +line perpendicular(point M, explicit pair normal); +bool perpendicular(line l1, line l2); +void perpendicular(picture pic=<default>, pair z, pair align, pair dir=<default>, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +void perpendicular(picture pic=<default>, pair z, pair align, path g, real size=<default>, pen p=<default>, marginT margin(path, pen)=<default>, filltype filltype=<default>); +real sharpangle(line l1, line l2); +line bisector(line l1, line l2, real angle=<default>, bool sharp=<default>); +line bisector(point A, point B, point C, point D, real angle=<default>, bool sharp=<default>); +line bisector(segment s, real angle=<default>); +line bisector(point A, point B, real angle=<default>); +line bisector(vertex V, real angle=<default>); +line bisector(side side); +bqe bqe(coordsys R=<default>, real a, real b, real c, real d, real e, real f); +bqe bqe(point M1, point M2, point M3, point M4, point M5); +int conicnodesfactor; +int conicnodesnumber(conic co, real angle1, real angle2, bool dir=<default>); +int circlenodesnumber(real r); +int circlenodesnumber(real r, real angle1, real angle2); +int parabolanodesnumberfactor; +int hyperbolanodesnumber(hyperbola h, real angle1, real angle2); +path arcfromfocus(conic co, real angle1, real angle2, int n=<default>, bool direction=<default>); +bool byfoci; +bool byvertices; +parabola parabola(point F, line l); +parabola parabola(point F, point vertex); +parabola parabola(point F, real a, real angle); +parabola parabola(bqe bqe); +parabola parabola(point M1, point M2, point M3, line l); +parabola parabola(point M1, point M2, point M3, point M4, point M5); +real operator ^(point M, explicit circle c); +path arcfromcenter(ellipse el, real angle1, real angle2, bool direction=<default>, int n=<default>); +path arcfromcenter(hyperbola h, real angle1, real angle2, int n=<default>, bool direction=<default>); +path arcfromcenter(explicit conic co, real angle1, real angle2, int n, bool direction=<default>); +path fromFocus(conic co, real angle1, real angle2, int n, bool direction); +bqe equation(ellipse el); +bqe equation(parabola p); +bqe equation(hyperbola h); +bqe equation(explicit conic co); +real focusToCenter(ellipse el, real a); +int relativesystem; +int curvilinearsystem; +int nodesystem; +abscissa relabscissa(real x); +abscissa relabscissa(int x); +abscissa relabscissa(line l, point M); +abscissa relabscissa(circle c, point M); +abscissa relabscissa(ellipse el, point M); +abscissa relabscissa(conic co, point M); +abscissa relabscissa(arc a, point M); +void markarc(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, arc a, pen sectorpen=<default>, pen markpen=<default>, marginT margin(path, pen)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marker marker=<default>); +int arcnodesnumber(explicit arc a); +path arctopath(arc a, int n); +real inradius(point A, point B, point C); +real inradius(triangle t); +real exradius(point A, point B, point C); +real exradius(side side); +circle excircle(point A, point B, point C); +circle excircle(side side); +int[] numarray; +line altitude(vertex V); +line altitude(side side); +int[] tricoef(side side); +path Arc(pair c, real r, real angle1, real angle2, bool direction, int n=<default>); +path Arc(pair c, real r, real angle1, real angle2, int n=<default>); +path Arc(pair c, explicit pair z1, explicit pair z2, bool direction=<default>, int n=<default>); guide polargraph(picture pic=<default>, real r(real), real a, real b, int n=<default>, guide join(... guide[])=<default>); guide polargraph(picture pic=<default>, real[] r, real[] theta, guide join(... guide[])=<default>); -void checkconditionlength(int x, int y); -guide Straight(... guide[]); +pair polar(real r, real theta); +string conditionlength; +guide Hermite(... guide[])(real[] splinetype(real[], real[])); +guide Hermite(... guide[]); +guide graph(pair f(real), real, real, int)(guide join(... guide[])); +guide[] graph(pair f(real), real, real, int)(guide join(... guide[]), bool3 cond(real)); +guide graph(picture pic=<default>, real f(real), real a, real b, int n=<default>, real T(real)=<default>, guide join(... guide[])=<default>); +guide[] graph(picture pic=<default>, real f(real), real a, real b, int n=<default>, real T(real)=<default>, bool3 cond(real), guide join(... guide[])=<default>); +guide graph(picture pic=<default>, real x(real), real y(real), real a, real b, int n=<default>, real T(real)=<default>, guide join(... guide[])=<default>); +guide[] graph(picture pic=<default>, real x(real), real y(real), real a, real b, int n=<default>, real T(real)=<default>, bool3 cond(real), guide join(... guide[])=<default>); +guide graph(picture pic=<default>, pair z(real), real a, real b, int n=<default>, real T(real)=<default>, guide join(... guide[])=<default>); +guide[] graph(picture pic=<default>, pair z(real), real a, real b, int n=<default>, real T(real)=<default>, bool3 cond(real), guide join(... guide[])=<default>); +guide graph(picture pic=<default>, pair[] z, guide join(... guide[])=<default>); +guide[] graph(picture pic=<default>, pair[] z, bool3[] cond, guide join(... guide[])=<default>); +guide graph(picture pic=<default>, real[] x, real[] y, guide join(... guide[])=<default>); +guide[] graph(picture pic=<default>, real[] x, real[] y, bool3[] cond, guide join(... guide[])=<default>); picture secondaryY(picture primary=<default>, void f(picture)); +picture secondaryX(picture primary=<default>, void f(picture)); string noprimary; -path Arc(pair c, real r, real angle1, real angle2, bool direction, int n=<default>); -path Arc(pair c, real r, real angle1, real angle2, int n=<default>); -path Arc(pair c, explicit pair z1, explicit pair z2, bool direction=<default>, int n=<default>); void labely(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>); void labely(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>); void labely(picture pic=<default>, Label L, string format=<default>, explicit pen p=<default>); void labelx(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>); void labelx(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>); void labelx(picture pic=<default>, Label L, string format=<default>, explicit pen p=<default>); -void xtick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>); -void xtick(picture pic=<default>, real x, pair dir=<default>, real size=<default>, pen p=<default>); -void xtick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>); -void xtick(picture pic=<default>, Label L, real x, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>); void tick(picture pic=<default>, pair z, pair dir, real size=<default>, pen p=<default>); void tick(picture pic=<default>, Label L, real value, explicit pair z, pair dir, string format=<default>, real size=<default>, pen p=<default>); -real ScaleX(picture pic=<default>, real x); -picture secondaryX(picture primary=<default>, void f(picture)); void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>); void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); void limits(picture pic=<default>, pair min, pair max, bool crop=<default>); -void crop(picture pic=<default>); -string conditionlength; void ylimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>); -void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>); void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>); -real ytrans(transform t, real y); +void YZero(picture, axisT)(bool extend=<default>); +void YZero(picture, axisT); void YEquals(picture, axisT)(real y, bool extend=<default>); -real xtrans(transform t, real x); -void Top(picture, axisT)(bool extend=<default>); -void Top(picture, axisT); -void Bottom(picture, axisT)(bool extend=<default>); -void Bottom(picture, axisT); -axisT axis; -void axis(picture pic=<default>, Label L=<default>, path g, path g2=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>), ticklocate locate, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>); -int Max; -int Value; +void XEquals(picture, axisT)(real x, bool extend=<default>); +void Left(picture, axisT)(bool extend=<default>); +void Left(picture, axisT); +int Min; void RightTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void RightTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void RightTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>); -tickvalues OmitTick(tickvalues)(... real[] x); +void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(); +void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>); void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>); -bool logaxiscoverage(int N, transform T, path g, ticklocate locate, pair side, int sign, real Size, Label F, string ticklabel(real), real limit, int first, int last); -void labelaxis(frame f, transform T, Label L, path g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>); -ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, pair dir(real)=<default>); -autoscaleT defaultS; -string DefaultLogFormat(real)(int base); -string DefaultLogFormat(real); -string NoZeroFormat(real); +real zerotickfuzz; +void drawtick(frame f, transform T, path g, path g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend); +pair ticklabelshift(pair align, pen p=<default>); string DefaultFormat(real); +string Format(real)(string s=<default>); real upscale(real b, real a); -scaleT Broken(real a, real b, bool automin=<default>, bool automax=<default>); +bool logaxiscoverage(int N, transform T, path g, ticklocate locate, pair side, int sign, real Size, Label F, string ticklabel(real), real limit, int first, int last); +pair labeltick(frame d, transform T, path g, ticklocate locate, real val, pair side, int sign, real Size, string ticklabel(real), Label F, real norm=<default>); +int[] divisors(int a, int b); +scientific scientific(real x); +scaleT Linear; +scaleT Linear(bool automin=<default>, bool automax=<default>, real s=<default>, real intercept=<default>); bool axiscoverage(int N, transform T, path g, ticklocate locate, real Step, pair side, int sign, real Size, Label F, string ticklabel(real), real norm, real limit); -void xequals(picture pic=<default>, Label L=<default>, real x, bool extend=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); -void XEquals(picture, axisT)(real x, bool extend=<default>); +Label Break; +tickvalues Break(tickvalues)(real, real); +void errorbar(picture pic, pair z, pair dp, pair dm, pen p=<default>, real size=<default>); +real linear(real)(real S(real x)=<default>, real Min, real Max); +tickvalues None(tickvalues v); path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>); -pair zero(real); -tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b); +int Max; +tickvalues NoZero(tickvalues); +autoscaleT defaultS; +real ScaleY(picture pic=<default>, real y); +void yequals(picture pic=<default>, Label L=<default>, real y, bool extend=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); +guide Spline(... guide[]); +bounds autoscale(real Min, real Max, scaleT scale=<default>); +void autoscale(picture pic=<default>, void axis(picture, axisT)); void Right(picture, axisT)(bool extend=<default>); void Right(picture, axisT); -guide Hermite(... guide[])(real[] splinetype(real[], real[])); -guide Hermite(... guide[]); -scaleT Logarithmic; -void scale(picture pic=<default>, scaleT x, scaleT y=<default>, scaleT z=<default>); -void scale(picture pic=<default>, bool xautoscale=<default>, bool yautoscale=<default>, bool zautoscale=<default>); -tickvalues None(tickvalues v); -void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(); -void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>); -pair polar(real r, real theta); -void Left(picture, axisT)(bool extend=<default>); -void Left(picture, axisT); -void yequals(picture pic=<default>, Label L=<default>, real y, bool extend=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); -string OmitFormat(real)(string s=<default> ... real[] x); -tickvalues OmitTickInterval(tickvalues)(real a, real b); -void drawtick(frame f, transform T, path g, path g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend); -void axes(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, bool extend=<default>, pair min=<default>, pair max=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); +void errorbars(picture pic=<default>, pair[] z, pair[] dp, pair[] dm=<default>, bool[] cond=<default>, pen p=<default>, real size=<default>); +void errorbars(picture pic=<default>, real[] x, real[] y, real[] dpx, real[] dpy, real[] dmx=<default>, real[] dmy=<default>, bool[] cond=<default>, pen p=<default>, real size=<default>); +void errorbars(picture pic=<default>, real[] x, real[] y, real[] dpy, bool[] cond=<default>, pen p=<default>, real size=<default>); +void XZero(picture, axisT)(bool extend=<default>); +void XZero(picture, axisT); +void LeftRight(picture, axisT)(bool extend=<default>); +void LeftRight(picture, axisT); +void labelaxis(frame f, transform T, Label L, path g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>); +path Circle(pair c, real r, int n=<default>); +real ytrans(transform t, real y); +string LogFormat(real)(int base); +string LogFormat(real); +void BottomTop(picture, axisT)(bool extend=<default>); +void BottomTop(picture, axisT); +void checkconditionlength(int x, int y); +pair zero(real); +void label(picture pic, Label L, pair z, real x, align align, string format, pen p); +pair tickMin(picture pic); +tickvalues generateticks(int sign, Label F=<default>, string ticklabel(real)=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, real Size=<default>, real size=<default>, transform T, pair side, path g, real limit, pen p, ticklocate locate, int[] divisor, bool opposite); +int Both; +ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, pair dir(real)=<default>); +string NoZeroFormat(real); +string trailingzero; picture vectorfield(path vector(real), path g, int n, bool truesize=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>); picture vectorfield(path vector(pair), pair a, pair b, int nx=<default>, int ny=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>); +tickvalues OmitTick(tickvalues)(... real[] x); +void Top(picture, axisT)(bool extend=<default>); +void Top(picture, axisT); +real maxlength(pair a, pair b, int nx, int ny); +real ScaleX(picture pic=<default>, real x); pair tickMax(picture pic); -real linear(real)(real S(real x)=<default>, real Min, real Max); -int Both; -pair tickMin(picture pic); -pair ticklabelshift(pair align, pen p=<default>); -int Min; -scaleT Linear; -scaleT Linear(bool automin=<default>, bool automax=<default>, real s=<default>, real intercept=<default>); -string LogFormat(real)(int base); -string LogFormat(real); -Label Break; -tickvalues Break(tickvalues)(real, real); -void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>); -tickvalues NoZero(tickvalues); -int[] divisors(int a, int b); scientific operator init(); bounds operator init(); ticklocate operator init(); locateT operator init(); tickvalues operator init(); axisT operator init(); +scaleT Logarithmic; +real xtrans(transform t, real x); +void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>); +void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>); +pair Scale(picture pic=<default>, pair z); +void xequals(picture pic=<default>, Label L=<default>, real x, bool extend=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); +scaleT Log; +scaleT Log(bool automin=<default>, bool automax=<default>); string signedtrailingzero; -void XZero(picture, axisT)(bool extend=<default>); -void XZero(picture, axisT); -string trailingzero; -real ScaleY(picture pic=<default>, real y); +scaleT BrokenLog(real a, real b, bool automin=<default>, bool automax=<default>); void xlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>); -pair labeltick(frame d, transform T, path g, ticklocate locate, real val, pair side, int sign, real Size, string ticklabel(real), Label F, real norm=<default>); -tickvalues generateticks(int sign, Label F=<default>, string ticklabel(real)=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, real Size=<default>, real size=<default>, transform T, pair side, path g, real limit, pen p, ticklocate locate, int[] divisor, bool opposite); +void scale(picture pic=<default>, scaleT x, scaleT y=<default>, scaleT z=<default>); +void scale(picture pic=<default>, bool xautoscale=<default>, bool yautoscale=<default>, bool zautoscale=<default>); +int Value; +void Bottom(picture, axisT)(bool extend=<default>); +void Bottom(picture, axisT); +void xtick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>); +void xtick(picture pic=<default>, real x, pair dir=<default>, real size=<default>, pen p=<default>); +void xtick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>); +void xtick(picture pic=<default>, Label L, real x, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>); string autoformat(string format=<default>, real norm ... real[] a); -pair Scale(picture pic=<default>, pair z); void ytick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>); void ytick(picture pic=<default>, real y, pair dir=<default>, real size=<default>, pen p=<default>); void ytick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>); void ytick(picture pic=<default>, Label L, real y, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>); -guide graph(pair f(real), real, real, int)(guide join(... guide[])); -guide[] graph(pair f(real), real, real, int)(guide join(... guide[]), bool3 cond(real)); -guide graph(picture pic=<default>, real f(real), real a, real b, int n=<default>, real T(real)=<default>, guide join(... guide[])=<default>); -guide[] graph(picture pic=<default>, real f(real), real a, real b, int n=<default>, real T(real)=<default>, bool3 cond(real), guide join(... guide[])=<default>); -guide graph(picture pic=<default>, real x(real), real y(real), real a, real b, int n=<default>, real T(real)=<default>, guide join(... guide[])=<default>); -guide[] graph(picture pic=<default>, real x(real), real y(real), real a, real b, int n=<default>, real T(real)=<default>, bool3 cond(real), guide join(... guide[])=<default>); -guide graph(picture pic=<default>, pair z(real), real a, real b, int n=<default>, real T(real)=<default>, guide join(... guide[])=<default>); -guide[] graph(picture pic=<default>, pair z(real), real a, real b, int n=<default>, real T(real)=<default>, bool3 cond(real), guide join(... guide[])=<default>); -guide graph(picture pic=<default>, pair[] z, guide join(... guide[])=<default>); -guide[] graph(picture pic=<default>, pair[] z, bool3[] cond, guide join(... guide[])=<default>); -guide graph(picture pic=<default>, real[] x, real[] y, guide join(... guide[])=<default>); -guide[] graph(picture pic=<default>, real[] x, real[] y, bool3[] cond, guide join(... guide[])=<default>); -scaleT BrokenLog(real a, real b, bool automin=<default>, bool automax=<default>); -void YZero(picture, axisT)(bool extend=<default>); -void YZero(picture, axisT); -scientific scientific(real x); -guide Spline(... guide[]); -void errorbars(picture pic=<default>, pair[] z, pair[] dp, pair[] dm=<default>, bool[] cond=<default>, pen p=<default>, real size=<default>); -void errorbars(picture pic=<default>, real[] x, real[] y, real[] dpx, real[] dpy, real[] dmx=<default>, real[] dmy=<default>, bool[] cond=<default>, pen p=<default>, real size=<default>); -void errorbars(picture pic=<default>, real[] x, real[] y, real[] dpy, bool[] cond=<default>, pen p=<default>, real size=<default>); -bounds autoscale(real Min, real Max, scaleT scale=<default>); -void autoscale(picture pic=<default>, void axis(picture, axisT)); -scaleT Log; -scaleT Log(bool automin=<default>, bool automax=<default>); -string Format(real)(string s=<default>); string baselinetemplate; -void label(picture pic, Label L, pair z, real x, align align, string format, pen p); -void BottomTop(picture, axisT)(bool extend=<default>); -void BottomTop(picture, axisT); -real zerotickfuzz; -void LeftRight(picture, axisT)(bool extend=<default>); -void LeftRight(picture, axisT); -void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>); -void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>); -void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>); +guide Straight(... guide[]); +scaleT Broken(real a, real b, bool automin=<default>, bool automax=<default>); +tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b); +axisT axis; +void axis(picture pic=<default>, Label L=<default>, path g, path g2=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>), ticklocate locate, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>); +string DefaultLogFormat(real)(int base); +string DefaultLogFormat(real); +tickvalues OmitTickInterval(tickvalues)(real a, real b); +void crop(picture pic=<default>); +void axes(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, bool extend=<default>, pair min=<default>, pair max=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>); +string OmitFormat(real)(string s=<default> ... real[] x); void labelz(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>); +void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>); void ztick3(picture pic=<default>, real z, triple dir=<default>, real size=<default>, pen p=<default>); void ztick3(picture pic=<default>, Label L, real z, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); +void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>); +void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); void ytick3(picture pic=<default>, real y, triple dir=<default>, real size=<default>, pen p=<default>); void ytick3(picture pic=<default>, Label L, real y, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); -void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>); -void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); -real ScaleZ(picture pic=<default>, real z); -void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>); -void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); -void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); void autoscale3(picture pic=<default>, void axis(picture, axisT)); +void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); +void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); triple defaultdir(triple X, triple Y, triple Z, bool opposite=<default>, projection P); +real ztrans(real[][] t, real z); +void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>); +void XYZero(picture, axisT); void YZZero(picture, axisT)(triple align=<default>, bool extend=<default>); void YZZero(picture, axisT); -void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool extend=<default>); void XZEquals(picture, axisT)(real x, real z, triple align=<default>, bool extend=<default>); void YZEquals(picture, axisT)(real y, real z, triple align=<default>, bool extend=<default>); void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>); void Bounds(picture, axisT); -void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); +void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(); +void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -triple Dir(real)(triple dir); surface bispline(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>); -void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>); -void XYZero(picture, axisT); -triple tickMax3(picture pic); +void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>); +void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>); +bool vperiodic(triple[][] a); +void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>); +void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); +bool uperiodic(triple[][] a); +void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); triple tickMin3(picture pic); -void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(); -void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); -real ztrans(real[][] t, real z); +void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>); +triple tickMax3(picture pic); +void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>); +void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>); +void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>); +void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>); +void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); +void Straight(flatguide3)(... void(flatguide3)[]); +real xtrans(real[][] t, real x); +void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>); +void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>); +real maxlength(triple f(pair z), pair a, pair b, int nu, int nv); +locateT operator init(); +triple Dir(real)(triple dir); +void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>); +void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); +picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>); +void label(picture pic, Label L, triple v, real x, align align, string format, pen p); +ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real)); +void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>); +void XZZero(picture, axisT); +real ytrans(real[][] t, real y); +path3 Circle(triple c, real r, triple normal=<default>, int n=<default>); +void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>); +void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool extend=<default>); +real ScaleZ(picture pic=<default>, real z); void Spline(flatguide3)(... void(flatguide3)[]); +void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>); +path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>); void graph(flatguide3)(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[])); void(flatguide3)[] graph(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]), bool3 cond(real)); void graph(flatguide3)(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>); @@ -3035,30 +3065,24 @@ void graph(flatguide3)(triple F(path, real), path p, int n=<default>, void join( void graph(flatguide3)(triple F(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>); void graph(flatguide3)(picture pic=<default>, real f(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>); void graph(flatguide3)(real f(pair), path p, int n=<default>, real T(pair), void join(flatguide3)(... void(flatguide3)[])=<default>); -void label(picture pic, Label L, triple v, real x, align align, string format, pen p); -void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>); -void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); -void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>); -void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>); +void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); +path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>); +path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>); +path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>); +void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>); +void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>); +void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>); +void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend); +void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>); +void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>); +void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>); triple ticklabelshift(triple align, pen p=<default>); -void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>); -void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); -triple Scale(picture pic=<default>, triple v); triple polar(real r, real theta, real phi); -picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>); -void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>); -void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>); -void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); -void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); -void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>); -locateT operator init(); -void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); -bool vperiodic(triple[][] a); -path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>); -void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>); -void XZZero(picture, axisT); -void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>); +triple Scale(picture pic=<default>, triple v); +void limits(picture pic=<default>, triple min, triple max); +void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>); +void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>); surface surface(triple[][] f, bool[][] cond=<default>); surface surface(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>); surface surface(real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>); @@ -3067,290 +3091,254 @@ surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<defa surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>); surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>); surface surface(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool cond(pair z)=<default>); -path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>); -path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>); -path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>); -void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>); -void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>); -void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>); -void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>); -void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>); -void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>); -void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>); -void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>); -void Straight(flatguide3)(... void(flatguide3)[]); -real xtrans(real[][] t, real x); -real ytrans(real[][] t, real y); -ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real)); -real maxlength(triple f(pair z), pair a, pair b, int nu, int nv); -void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend); -void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>); -bool uperiodic(triple[][] a); -path3 Circle(triple c, real r, triple normal=<default>, int n=<default>); -void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>); -void limits(picture pic=<default>, triple min, triple max); +void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>); real axiscoverage; -real ylabelwidth; real Ticksize; +real ticksize; int nmesh; -int ngraph; -bool Crop; int nCircle; -real ticksize; -bool NoCrop; real epsilon; +real ylabelwidth; +int ngraph; real axislabelfactor; +bool Crop; +bool NoCrop; +guide hermite(real[] x, real[] y, real[] splinetype(real[], real[])=<default>); real[] monotonic(real[] x, real[] y); real[] clamped(real[], real[])(real slopea, real slopeb); -real[] natural(real[] x, real[] y); -real[] periodic(real[] x, real[] y); +real[] linear(real[] x, real[] y); string differentlengths; string morepoints; -void checklengths(int x, int y, string text=<default>); -real[] notaknot(real[] x, real[] y); -real[] linear(real[] x, real[] y); -guide hermite(real[] x, real[] y, real[] splinetype(real[], real[])=<default>); -void checkincreasing(real[] x); real[] Spline(real[] x, real[] y); real[](real[], real[])[] Spline; -void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen pGrid=<default>, pen pgrid=<default>, bool above=<default>); -void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen[] pGrid, pen[] pgrid, bool above=<default>); -grid3(picture pic)[] ZX_ZYgrid(position posa=<default>, position posb=<default>); -grid3(picture pic)[] ZX_ZYgrid; +real[] notaknot(real[] x, real[] y); +real[] periodic(real[] x, real[] y); +void checklengths(int x, int y, string text=<default>); +real[] natural(real[] x, real[] y); +void checkincreasing(real[] x); grid3(picture pic)[] YX_YZgrid(position posa=<default>, position posb=<default>); grid3(picture pic)[] YX_YZgrid; +grid3(picture pic)[] YZYgrid(position pos=<default>); +grid3(picture pic)[] YZYgrid; grid3(picture pic)[] XZXgrid(position pos=<default>); grid3(picture pic)[] XZXgrid; grid3(picture pic)[] ZXZgrid(position pos=<default>); grid3(picture pic)[] ZXZgrid; -grid3(picture pic)[] YXYgrid(position pos=<default>); -grid3(picture pic)[] YXYgrid; -grid3(picture pic)[] XYXgrid(position pos=<default>); -grid3(picture pic)[] XYXgrid; grid3 ZYgrid(picture pic)(position pos=<default>); grid3 ZYgrid(picture pic); grid3 YZgrid(picture pic)(position pos=<default>); grid3 YZgrid(picture pic); +grid3 ZXgrid(picture pic)(position pos=<default>); +grid3 ZXgrid(picture pic); grid3 XZgrid(picture pic)(position pos=<default>); grid3 XZgrid(picture pic); grid3 YXgrid(picture pic)(position pos=<default>); grid3 YXgrid(picture pic); -grid3(picture pic)[] ZYZgrid(position pos=<default>); -grid3(picture pic)[] ZYZgrid; -triple YZ(picture pic); -grid3(picture pic)[] operator cast(grid3 gridroutine(picture pic)); -grid3(picture pic)[][] operator cast(grid3(picture pic)[] gridroutine); -grid3(picture pic)[][] operator cast(grid3 gridroutine(picture pic)); -grid3(picture pic)[] YZYgrid(position pos=<default>); -grid3(picture pic)[] YZYgrid; -triple Y(picture pic); -void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>); -grid3(picture pic)[][] XYZgrid(position pos=<default>); -grid3(picture pic)[][] XYZgrid; -position top; grid3 XYgrid(picture pic)(position pos=<default>); grid3 XYgrid(picture pic); -void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>); ticksgridT InTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>); -triple X(picture pic); +void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>); position middle; -grid3 ZXgrid(picture pic)(position pos=<default>); -grid3 ZXgrid(picture pic); -triple XY(picture pic); -grid3(picture pic)[] XY_XZgrid(position posa=<default>, position posb=<default>); -grid3(picture pic)[] XY_XZgrid; +grid3(picture pic)[] YXYgrid(position pos=<default>); +grid3(picture pic)[] YXYgrid; +grid3(picture pic)[] ZX_ZYgrid(position posa=<default>, position posb=<default>); +grid3(picture pic)[] ZX_ZYgrid; ticksgridT OutTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>); +position top; +triple ZX(picture pic); +triple X(picture pic); grid3 operator init(); ticksgridT operator init(); +triple Y(picture pic); +grid3(picture pic)[] operator cast(grid3 gridroutine(picture pic)); +grid3(picture pic)[][] operator cast(grid3(picture pic)[] gridroutine); +grid3(picture pic)[][] operator cast(grid3 gridroutine(picture pic)); +position bottom; +void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen pGrid=<default>, pen pgrid=<default>, bool above=<default>); +void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen[] pGrid, pen[] pgrid, bool above=<default>); +grid3(picture pic)[] XY_XZgrid(position posa=<default>, position posb=<default>); +grid3(picture pic)[] XY_XZgrid; +grid3(picture pic)[] ZYZgrid(position pos=<default>); +grid3(picture pic)[] ZYZgrid; +grid3(picture pic)[] XYXgrid(position pos=<default>); +grid3(picture pic)[] XYXgrid; +void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>); ticksgridT InOutTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>); -void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>); -triple ZX(picture pic); +triple YZ(picture pic); +triple XY(picture pic); +void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>); +grid3(picture pic)[][] XYZgrid(position pos=<default>); +grid3(picture pic)[][] XYZgrid; triple Z(picture pic); -position bottom; -real pwhermite(real)(real[] x, real[] y, real[] dy); -horner hdiffdiv(real[] x, real[] y, real[] dy); -horner diffdiv(real[] x, real[] y); +real fspline(real)(real[] x, real[] y, real[] splinetype(real[], real[])=<default>); real fhorner(real)(horner sh); horner operator init(); -real fspline(real)(real[] x, real[] y, real[] splinetype(real[], real[])=<default>); +horner hdiffdiv(real[] x, real[] y, real[] dy); +real pwhermite(real)(real[] x, real[] y, real[] dy); +horner diffdiv(real[] x, real[] y); void labelpath(frame f, Label L, path g, string justify=<default>, pen p=<default>); void labelpath(picture pic=<default>, Label L, path g, string justify=<default>, pen p=<default>); -string Centered; string RightJustified; +string Centered; string LeftJustified; surface labelpath(string s, path3 p, real angle=<default>, triple optional=<default>); -triple[] nextframe(path3 p, real reltimestart, triple[] start, real reltimeend, int subdiv=<default>); triple nextnormal(triple p, triple q); -real eps; triple[] firstframe(path3 p, triple optional=<default>); +triple[] nextframe(path3 p, real reltimestart, triple[] start, real reltimeend, int subdiv=<default>); +real eps; FitControl defaultControl; -void lm_lmdif(int m, int n, real[] x, real[] fvec, real ftol, real xtol, real gtol, int maxfev, real epsfcn, real[] diag, int mode, real factor, lm_int_type info, lm_int_type nfev, real[] fjac, int[] ipvt, real[] qtf, real[] wa1, real[] wa2, real[] wa3, real[] wa4, void evaluate(real[] par, int m_dat, real[] fvec, lm_data_type data, lm_int_type info), void printout(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev), lm_data_type data); void lm_lmpar(int n, real[] r, int ldr, int[] ipvt, real[] diag, real[] qtb, real delta, lm_real_type par, real[] x, real[] sdiag, real[] wa1, real[] wa2); -void lm_qrsolv(int n, real[] r, int ldr, int[] ipvt, real[] diag, real[] qtb, real[] x, real[] sdiag, real[] wa); +void lm_qrfac(int m, int n, real[] a, bool pivot, int[] ipvt, real[] rdiag, real[] acnorm, real[] wa); void lm_print_quiet(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev); +void lm_print_default(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev); string pad(string str, int count, string pad=<default>); string pad(int num, int digits, string pad=<default>); string pad(real num, int digits, string pad=<default>); -void lm_evaluate_default(real[] par, int m_dat, real[] fvec, lm_data_type data, lm_int_type info); -real LM_DWARF; -real LM_MACHEP; -void lm_qrfac(int m, int n, real[] a, bool pivot, int[] ipvt, real[] rdiag, real[] acnorm, real[] wa); -real LM_SQRT_GIANT; +real lm_enorm(int n, real[] x, int offset=<default>); real SQR(real x); +void lm_lmdif(int m, int n, real[] x, real[] fvec, real ftol, real xtol, real gtol, int maxfev, real epsfcn, real[] diag, int mode, real factor, lm_int_type info, lm_int_type nfev, real[] fjac, int[] ipvt, real[] qtf, real[] wa1, real[] wa2, real[] wa3, real[] wa4, void evaluate(real[] par, int m_dat, real[] fvec, lm_data_type data, lm_int_type info), void printout(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev), lm_data_type data); string[] lm_shortmsg; -FitResult fit(real[] xdata, real[] ydata, real[] errors, real function(real[], real), real[] parameters, FitControl control=<default>); -FitResult fit(real[] xdata, real[] ydata, real function(real[], real), real[] parameters, FitControl control=<default>); real LM_USERTOL; +real LM_DWARF; +real LM_MACHEP; +string[] lm_infmsg; +void lm_evaluate_default(real[] par, int m_dat, real[] fvec, lm_data_type data, lm_int_type info); lm_data_type operator init(); lm_int_type operator init(); lm_real_type operator init(); lm_control_type operator init(); FitControl operator init(); FitResult operator init(); -string[] lm_infmsg; -real LM_SQRT_DWARF; void lm_minimize(int m_dat, int n_par, real[] par, void evaluate(real[] par, int m_dat, real[] fvec, lm_data_type data, lm_int_type info), void printout(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev), lm_data_type data, lm_control_type control); -void lm_print_default(int n_par, real[] par, int m_dat, real[] fvec, lm_data_type data, int iflag, int iter, int nfev); -real lm_enorm(int n, real[] x, int offset=<default>); -marker TildeIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>); -marker CircleBarIntervalMarker(int i=<default>, int n=<default>, real barsize=<default>, real radius=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, filltype filltype=<default>, bool circleabove=<default>, frame uniform=<default>, bool above=<default>); +void lm_qrsolv(int n, real[] r, int ldr, int[] ipvt, real[] diag, real[] qtb, real[] x, real[] sdiag, real[] wa); +real LM_SQRT_GIANT; +real LM_SQRT_DWARF; +FitResult fit(real[] xdata, real[] ydata, real[] errors, real function(real[], real), real[] parameters, FitControl control=<default>); +FitResult fit(real[] xdata, real[] ydata, real function(real[], real), real[] parameters, FitControl control=<default>); +marker CrossIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>); +marker StickIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>); void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, pair A, pair O, pair B, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>); real markanglespace(pen p=<default>); real markanglespace; -real markangleradius(pen p=<default>); -real markangleradius; -real markangleradiusfactor; -real markanglespacefactor; +frame crossframe(int n=<default>, real size=<default>, pair space=<default>, real angle=<default>, pair offset=<default>, pen p=<default>); real crossmarksize(pen p=<default>); -real crossmarksizefactor; -frame circlebarframe(int n=<default>, real barsize=<default>, real radius=<default>, real angle=<default>, pair offset=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); -real circlemarkradius(pen p=<default>); +real barmarksize(pen p=<default>); +real barmarksizefactor; real circlemarkradiusfactor; -frame stickframe(int n=<default>, real size=<default>, pair space=<default>, real angle=<default>, pair offset=<default>, pen p=<default>); -frame stickframe; -real stickmarkspace(pen p=<default>); -real stickmarksize(pen p=<default>); -real stickmarksizefactor; -real stickmarkspacefactor; frame tildeframe(int n=<default>, real size=<default>, pair space=<default>, real angle=<default>, pair offset=<default>, pen p=<default>); frame tildeframe; -real tildemarksizefactor; +frame duplicate(path g, int n=<default>, pair space=<default>, pen p=<default>); void markinterval(picture pic=<default>, frame f, path g)(int n=<default>, frame f, bool rotated=<default>); +marker CircleBarIntervalMarker(int i=<default>, int n=<default>, real barsize=<default>, real radius=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, filltype filltype=<default>, bool circleabove=<default>, frame uniform=<default>, bool above=<default>); +real crossmarksizefactor; +marker TildeIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>); real tildemarksize(pen p=<default>); -frame duplicate(path g, int n=<default>, pair space=<default>, pen p=<default>); +real tildemarksizefactor; +real markangleradiusfactor; +real markanglespacefactor; +real stickmarksizefactor; +frame stickframe(int n=<default>, real size=<default>, pair space=<default>, real angle=<default>, pair offset=<default>, pen p=<default>); +frame stickframe; +real circlemarkradius(pen p=<default>); +frame circlebarframe(int n=<default>, real barsize=<default>, real radius=<default>, real angle=<default>, pair offset=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>); +real stickmarksize(pen p=<default>); +real stickmarkspacefactor; +real stickmarkspace(pen p=<default>); +real markangleradius(pen p=<default>); +real markangleradius; marker operator *(transform T, marker m); -marker CrossIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>); -frame crossframe(int n=<default>, real size=<default>, pair space=<default>, real angle=<default>, pair offset=<default>, pen p=<default>); -marker StickIntervalMarker(int i=<default>, int n=<default>, real size=<default>, real space=<default>, real angle=<default>, pair offset=<default>, bool rotated=<default>, pen p=<default>, frame uniform=<default>, bool above=<default>); -real barmarksizefactor; -real barmarksize(pen p=<default>); -real findroot(real f(real), real a, real b, real tolerance=<default>, real fa=<default>, real fb=<default>); +real[] leastsquares(real[][] A, real[] b, bool warn=<default>); +pair[][] fft(pair[][] a, int sign=<default>); +pair[] quarticroots(real a, real b, real c, real d, real e); +real slope(path g, real x, int n=<default>); +real slope(path g, explicit pair z, int n=<default>); real value(path g, real x, int n=<default>); real value(path g, explicit pair z, int n=<default>); real time(path g, real x, int n=<default>); real time(path g, explicit pair z, int n=<default>); -string nopoint; real interpolate(real[] x, real[] y, real x0, int i); real interpolate(real[] x, real[] y, real x0); -void drawline(picture pic=<default>, pair P, pair Q, pen p=<default>); -bool square(real[][] m); -real[] zero(int n); -real[][] zero(int n, int m); +bool rectangular(real[][] m); +bool rectangular(pair[][] m); +bool rectangular(triple[][] m); bool lexorder(pair a, pair b); bool lexorder(triple a, triple b); int unique(real[] a, real x); int unique(string[] a, string x); -int[][] segment(bool[] b); -int[][] segmentlimits(bool[] b); -bool increasing(real[] a, bool strict=<default>); real[] partialsum(real[] a); real[] partialsum(real[] a, real[] dx); int[] partialsum(int[] a); int[] partialsum(int[] a, int[] dx); -real acot(real x); +picture grid(int Nx, int Ny, pen p=<default>); +real frac(real x); real asec(real x); real acsc(real x); real sec(real x); real csc(real x); -pair exp(explicit pair z); int quadrant(real degrees); -pair[] quarticroots(real a, real b, real c, real d, real e); -picture grid(int Nx, int Ny, pen p=<default>); -real[] leastsquares(real[][] A, real[] b, bool warn=<default>); +int[][] segment(bool[] b); +pair exp(explicit pair z); +string nopoint; +real cot(real x); pair log(explicit pair z); -pair[][] fft(pair[][] a, int sign=<default>); -real slope(path g, real x, int n=<default>); -real slope(path g, explicit pair z, int n=<default>); triple intersectionpoint(triple n0, triple P0, triple n1, triple P1); -pair unityroot(int n, int k=<default>); -bool rectangular(real[][] m); -bool rectangular(pair[][] m); -bool rectangular(triple[][] m); -real frac(real x); +real[] zero(int n); +real[][] zero(int n, int m); +real findroot(real f(real), real a, real b, real tolerance=<default>, real fa=<default>, real fb=<default>); +void drawline(picture pic=<default>, pair P, pair Q, pen p=<default>); rootfinder_settings operator init(); -bool polygon(path p); -real cot(real x); +real acot(real x); real intersect(pair p, pair q, pair z); real intersect(triple P, triple Q, triple n, triple Z); +pair unityroot(int n, int k=<default>); +int[][] segmentlimits(bool[] b); +bool polygon(path p); +bool increasing(real[] a, bool strict=<default>); +bool square(real[][] m); path cuttings; path cutafter(path p, path q); path cutbefore(path p, path q); -void draw(picture pic=<default>, obj o, light light=<default>); obj operator *(real[][] T, obj o); obj operator init(); -real[] solveBVP(real[] f(real, real[]), real a, real b=<default>, real h=<default>, int n=<default>, bool dynamic=<default>, real tolmin=<default>, real tolmax=<default>, real dtmin=<default>, real dtmax=<default>, RKTableau tableau, bool verbose=<default>, real[] initial(real[]), real[] discrepancy(real[]), real[] guess, int iterations=<default>); +void draw(picture pic=<default>, obj o, light light=<default>); +real[][] finiteDifferenceJacobian(real[] f(real[]), real[] t, real[] h=<default>); solution integrate(real y, real c=<default>, real f(real t, real y), real a, real b=<default>, real h=<default>, int n=<default>, bool dynamic=<default>, real tolmin=<default>, real tolmax=<default>, real dtmin=<default>, real dtmax=<default>, RKTableau tableau, bool verbose=<default>); Solution integrate(real[] y, real[] f(real t, real[] y), real a, real b=<default>, real h=<default>, int n=<default>, bool dynamic=<default>, real tolmin=<default>, real tolmax=<default>, real dtmin=<default>, real dtmax=<default>, RKTableau tableau, bool verbose=<default>); real adjust(real h, real error, real tolmin, real tolmax, RKTableau tableau); -RKTableau RK5DP; +real error(real error, real initial, real lowOrder, real norm, real diff); +RKTableau RK5; RKTableau RK4; -RKTableau E_RK3BS; -RKTableau E_PC; +RKTableau RK3BS; +real[] newton(int iterations=<default>, real[] f(real[]), real[][] jacobian(real[]), real[] t); +RKTableau RK2; RKTableau E_Euler; -RKTableau Euler; -void expfactors(real x, coefficients a); real phi1(real x); real[] Coeff; real stepfactor; -real[][] finiteDifferenceJacobian(real[] f(real[]), real[] t, real[] h=<default>); +real phi2(real x); +RKTableau PC; +RKTableau RK5DP; +RKTableau E_PC; RKTableau E_RK2; -real error(real error, real initial, real lowOrder, real norm, real diff); -RKTableau RK5F; void report(real old, real h, real t); -RKTableau PC; -RKTableau RK2; -real phi2(real x); -real[] newton(int iterations=<default>, real[] f(real[]), real[][] jacobian(real[]), real[] t); +RKTableau RK3; coefficients operator init(); RKTableau operator init(); solution operator init(); Solution operator init(); -RKTableau RK5; -RKTableau RK3BS; -real phi3(real x); void write(solution S); void write(Solution S); -RKTableau RK3; +real phi3(real x); +void expfactors(real x, coefficients a); +RKTableau E_RK3BS; +RKTableau Euler; +real[] solveBVP(real[] f(real, real[]), real a, real b=<default>, real h=<default>, int n=<default>, bool dynamic=<default>, real tolmin=<default>, real tolmax=<default>, real dtmin=<default>, real dtmax=<default>, RKTableau tableau, bool verbose=<default>, real[] initial(real[]), real[] discrepancy(real[]), real[] guess, int iterations=<default>); +RKTableau RK5F; pen[] cmyk(pen[] Palette); -pen[] Gradient(int NColors=<default> ... pen[] p); -void PaletteTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, pen pTick=<default>, pen ptick=<default>); -void PaletteTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>); -pen[] palette(real[] f, pen[] palette); -pen[][] palette(real[][] f, pen[] palette); -void palette(picture pic=<default>, Label L=<default>, bounds bounds, pair initial, pair final, void axis(picture, axisT)=<default>, pen[] palette, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>)=<default>, bool copy=<default>, bool antialias=<default>); -pen[] adjust(picture pic, real min, real max, real rmin, real rmax, pen[] palette); -bounds Automatic(picture pic, real min, real max); -bounds Range(picture pic, real min, real max)(bool automin=<default>, real min=<default>, bool automax=<default>, real max=<default>); -pen[] BWRainbow(int NColors, bool two); -pen[] BWRainbow(int NColors=<default>); -transform swap; -void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>); -real[] sequencereal; pen[] BWRainbow2(int NColors=<default>); pen[] Wheel(int NColors=<default>); -pen[] Rainbow(int NColors=<default>); -pen[] Grayscale(int NColors=<default>); -bounds Full(picture pic, real min, real max); +real[] sequencereal; +pen[] adjust(picture pic, real min, real max, real rmin, real rmax, pen[] palette); void image(frame f, real[][] data, pair initial, pair final, pen[] palette, bool transpose=<default>, transform t=<default>, bool copy=<default>, bool antialias=<default>); void image(frame f, pen[][] data, pair initial, pair final, bool transpose=<default>, transform t=<default>, bool copy=<default>, bool antialias=<default>); bounds image(picture pic=<default>, real[][] f, bounds range(picture pic, real min, real max)=<default>, pair initial, pair final, pen[] palette, bool transpose=<default>, bool copy=<default>, bool antialias=<default>); @@ -3359,156 +3347,192 @@ void image(picture pic=<default>, pen[][] data, pair initial, pair final, bool t void image(picture pic=<default>, pen f(int, int), int width, int height, pair initial, pair final, bool transpose=<default>, bool antialias=<default>); bounds image(picture pic=<default>, pair[] z, real[] f, bounds range(picture pic, real min, real max)=<default>, pen[] palette); bounds image(picture pic=<default>, real[] x, real[] y, real[] f, bounds range(picture pic, real min, real max)=<default>, pen[] palette); +bounds Full(picture pic, real min, real max); +bounds Automatic(picture pic, real min, real max); +bounds Range(picture pic, real min, real max)(bool automin=<default>, real min=<default>, bool automax=<default>, real max=<default>); +transform swap; +void NoTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>); +pen[] Gradient(int NColors=<default> ... pen[] p); pen[] quantize(pen[] Palette, int n); +pen[] Grayscale(int NColors=<default>); +pen[] BWRainbow(int NColors, bool two); +pen[] BWRainbow(int NColors=<default>); +pen[] palette(real[] f, pen[] palette); +pen[][] palette(real[][] f, pen[] palette); +void palette(picture pic=<default>, Label L=<default>, bounds bounds, pair initial, pair final, void axis(picture, axisT)=<default>, pen[] palette, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>)=<default>, bool copy=<default>, bool antialias=<default>); +void PaletteTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, pen pTick=<default>, pen ptick=<default>); +void PaletteTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(int sign=<default>); +pen[] Rainbow(int NColors=<default>); +picture crosshatch(real H=<default>, pen p=<default>); picture hatch(real H=<default>, pair dir=<default>, pen p=<default>); +real hatchepsilon; picture checker(real Hx=<default>, real Hy=<default>, pen p=<default>); picture tile(real Hx=<default>, real Hy=<default>, pen p=<default>, filltype filltype=<default>); -frame tiling(string name, picture pic, pair lb=<default>, pair rt=<default>); -picture crosshatch(real H=<default>, pen p=<default>); picture brick(real Hx=<default>, real Hy=<default>, pen p=<default>); +frame tiling(string name, picture pic, pair lb=<default>, pair rt=<default>); void add(string name, picture pic, pair lb=<default>, pair rt=<default>); -real hatchepsilon; -void gsave(picture pic=<default>); -pen textpen; void grestore(picture pic=<default>); +pen textpen; +void gsave(picture pic=<default>); pair align; +rational sum(rational[] a); +bool rectangular(rational[][] m); +bool operator >(rational r, rational s); +bool operator <(rational r, rational s); +rational operator /(rational r, rational s); +rational abs(rational r); +int lcm(int m, int n); +bool operator >=(rational r, rational s); +rational operator +(rational r, rational s); +rational operator init(); +rational min(rational a, rational b); +rational operator -(rational r); +rational operator -(rational r, rational s); +rational max(rational a, rational b); +rational max(rational[] a); +rational operator cast(int p); +rational[] operator cast(int[] a); +rational[][] operator cast(int[][] a); +void write(string s=<default>, rational r, void suffix(file)=<default>); +void write(string s=<default>, rational[] a, void suffix(file)=<default>); +void write(string s=<default>, rational[][] a, void suffix(file)=<default>); +int gcd(int m, int n); +bool operator ==(rational r, rational s); +bool[] operator ==(rational[] r, rational s); +bool operator ==(rational[] r, rational[] s); +bool operator ==(rational[][] r, rational[][] s); +bool operator <=(rational r, rational s); +real operator ecast(rational r); +rational operator *(rational r, rational s); path roundedpath(path A, real R, real S=<default>); real infinity; problem operator init(); void bibliography(string name); -void bibliographystyle(string name); +void subitem(string s, pen p=<default>); void item(string s, pen p=<default>, bool step=<default>); +void asyfilecode(bool center=<default>, string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>); +void asyfigure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, filltype filltype=<default>, bool newslide=<default>); void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>); -void indexedfigure(string prefix, int first, int last, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool step=<default>); +void code(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>); +string cropcode(string s); +void asyinclude(string s, real xsize=<default>, real ysize=<default>); +string[] codefile; +void figure(string[] s, string options=<default>, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void figure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void display(frame[] f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void display(frame f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void display(string[] s, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void display(string s, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); +void equation(string s, pen p=<default>); +void vbox(string s, pen p=<default>); +void remark(bool center=<default>, string s, pair align=<default>, pen p=<default>, real indent=<default>, bool minipage=<default>, real skip=<default>, filltype filltype=<default>, bool step=<default>); void outline(string s=<default>, pair position=<default>, pair align=<default>, pen p=<default>); -void incrementposition(pair z); +void erasestep(int erasenode); bool checkposition(); -void newslide(bool stepping=<default>); -void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>); void nextpage(pen p=<default>); -void numberpage(pen p=<default>); void reversevideo(); -string texcolor(pen p); +void color(string name, string color); +bool empty(); +void setpens(pen red=<default>, pen blue=<default>, pen steppen=<default>); int preamblenodes; -bool havepagenumber; int page; -int[] lastnode; -pair startposition; +int[] firstnode; pair titlepageposition; -void color(string name, string color); pen foregroundcolor; pen backgroundcolor; pen figuremattpen; -real figureborder; -pen steppagenumberpen; -pen pagenumberpen; -real titleskip; -pen titlepen; +pair pagenumberposition; +string newbulletcolor; +void skip(real n=<default>); +string oldbulletcolor; pair titlealign; -pair urlskip; pair dateskip; -real codeskip; real itemskip; -pen urlpen; pen datepen; -pen authorpen; +pen institutionpen; pen titlepagepen; -pen itempen; -string bulletcolor(string color); -real minipagewidth; -bool landscape; +pen codepen; +pair urlskip; +transform tinv; +picture background; +void background(); real pageheight; real pagewidth; -real pagemargin; +void indexedfigure(string prefix, int first, int last, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool step=<default>); +void equations(string s, pen p=<default>); +pen titlepen; +string bulletcolor(string color); +real minipagemargin; +void incrementposition(pair z); bool allowstepping; -bool itemstep; -bool empty(); -string[] codefile; -void subitem(string s, pen p=<default>); -void setpens(pen red=<default>, pen blue=<default>, pen steppen=<default>); -bool firststep; -void remark(bool center=<default>, string s, pair align=<default>, pen p=<default>, real indent=<default>, bool minipage=<default>, real skip=<default>, filltype filltype=<default>, bool step=<default>); -void usersetting(); -pen institutionpen; -void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>); -void asyfilecode(bool center=<default>, string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>); +void newslide(bool stepping=<default>); void center(string s, pen p=<default>); -pair currentposition; +real titleskip; +bool stepping; +pen urlpen; +pen steppagenumberpen; void currentexitfunction(); -void skip(real n=<default>); -void exitfunction(); void step(); -pair pagenumberposition; -int[] firstnode; -real minipagemargin; +pair startposition; +pair currentposition; +void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>); +void asycode(bool center=<default>, string s, string options=<default>, string caption=<default>, string preamble=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>); +pen itempen; +string asywrite(string s, string preamble=<default>); bool reverse; -void asyinclude(string s, real xsize=<default>, real ysize=<default>); -void vbox(string s, pen p=<default>); +void numberpage(pen p=<default>); +bool firststep; +bool landscape; +real figureborder; string bullet; -string oldbulletcolor; -void figure(string[] s, string options=<default>, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void figure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void asyfigure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, filltype filltype=<default>, bool newslide=<default>); -void display(frame[] f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void display(frame f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void display(string[] s, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void display(string s, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>); -void equation(string s, pen p=<default>); -void asycode(bool center=<default>, string s, string options=<default>, string caption=<default>, string preamble=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>); -picture background; -void background(); +void normalvideo(); +real codeskip; void multifigure(string[] slist, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool step=<default>); -void erasestep(int erasenode); -void code(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>); -transform tinv; +bool itemstep; +pen pagenumberpen; +int[] lastnode; +void usersetting(); +real aboveequationskip; +real minipagewidth; +void bibliographystyle(string name); +real pagemargin; +string texcolor(pen p); +void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>); +pen authorpen; pair pagenumberalign; -pen codepen; -void equations(string s, pen p=<default>); -string cropcode(string s); -string newbulletcolor; -bool stepping; -string asywrite(string s, string preamble=<default>); -void normalvideo(); +bool havepagenumber; +void exitfunction(); +picture slopefield(real f(real, real), pair a, pair b, int nx=<default>, int ny=<default>, real tickfactor=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); +picture slopefield(real f(real), pair a, pair b, int nx=<default>, int ny=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); path curve(pair c, real f(real, real), pair a, pair b); path curve(pair c, real f(real), pair a, pair b); real stepfraction; -picture slopefield(real f(real, real), pair a, pair b, int nx=<default>, int ny=<default>, real tickfactor=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); -picture slopefield(real f(real), pair a, pair b, int nx=<default>, int ny=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>); -evaluatedpoint[][][] make3dgrid(triple a, triple b, int nx, int ny, int nz, real f(triple), bool allowzero=<default>); +surface implicitsurface(real f(triple)=<default>, real ff(real, real, real)=<default>, triple a, triple b, int n=<default>, bool keyword overlapedges=<default>, int keyword nx=<default>, int keyword ny=<default>, int keyword nz=<default>, int keyword maxdepth=<default>, bool keyword usetriangles=<default>); +evaluatedpoint[][] slice(evaluatedpoint[][] a, int start1, int end1, int start2, int end2); +evaluatedpoint[][][] slice(evaluatedpoint[][][] a, int start1, int end1, int start2, int end2, int start3, int end3); +positionedvector[][] slice(positionedvector[][] a, int start1, int end1, int start2, int end2); +positionedvector[][][] slice(positionedvector[][][] a, int start1, int end1, int start2, int end2, int start3, int end3); triple nGrad(triple)(real f(triple)); patch[] quadpatches(path3 edgecycle, positionedvector[] corners, real f(triple), triple grad(triple), triple a, triple b, bool usetriangles); bool checkpt(triple testpt, real f(triple), triple grad(triple), triple a, triple b); -patch[] maketriangle(path3 external, real f(triple), triple grad(triple), bool allowsubdivide=<default>); +bool checkptincube(triple pt, triple a, triple b); +bool check_fpt_zero(triple testpoint, real f(triple), triple grad(triple)); patch[] triangletoquads(path3 external, real f(triple), triple grad(triple), triple a, triple b); triple normalout(int face); -path3 pathinface(positionedvector v1, positionedvector v2, triple facenorm, triple edge1normout, triple edge2normout); -path3 pathinface(positionedvector v1, positionedvector v2, int face, int edge1face, int edge2face); -real[] projecttospan_findcoeffs(triple toproject, triple v1, triple v2, bool warn=<default>); -real angledegrees(triple a, triple b); -int[] makecircle(edge[] edges); -int YLOW; -int XLOW; -patch trianglewithnormals(path3 external, triple n1, triple n2, triple n3); -real(real)[] bernstein; -int ZHIGH; -int NULL_VERTEX; path3 bisector(path3 edgecycle, int[] savevertices); -int XHIGH; +triple projecttospan(triple toproject, triple v1, triple v2, real mincoeff=<default>); int YHIGH; -evaluatedpoint[][] slice(evaluatedpoint[][] a, int start1, int end1, int start2, int end2); -evaluatedpoint[][][] slice(evaluatedpoint[][][] a, int start1, int end1, int start2, int end2, int start3, int end3); -positionedvector[][] slice(positionedvector[][] a, int start1, int end1, int start2, int end2); -positionedvector[][][] slice(positionedvector[][][] a, int start1, int end1, int start2, int end2, int start3, int end3); -real B33(real t); -bool checkptincube(triple pt, triple a, triple b); +int XHIGH; +int NULL_VERTEX; +patch trianglewithnormals(path3 external, triple n1, triple n2, triple n3); patch patchwithnormals(path3 external, triple[] u0normals, triple[] u1normals, triple[] v0normals, triple[] v1normals); patch patchwithnormals(path3 external, triple normalat(triple)); -path3 pathbetween(positionedvector v1, positionedvector v2); -path3 pathbetween(path3 edgecycle, int vertex1, int vertex2); -bool check_fpt_zero(triple testpoint, real f(triple), triple grad(triple)); -triple projecttospan(triple toproject, triple v1, triple v2, real mincoeff=<default>); -int ZLOW; +real(real)[] bernstein; +real B23(real t); +real B13(real t); +real B03(real t); bool operator ==(edge a, edge b); +real B33(real t); pathwithnormals_settings operator init(); intset operator init(); int_to_intset operator init(); @@ -3516,299 +3540,308 @@ edge operator init(); positionedvector operator init(); evaluatedpoint operator init(); gridwithzeros operator init(); -real B13(real t); -surface implicitsurface(real f(triple)=<default>, real ff(real, real, real)=<default>, triple a, triple b, int n=<default>, bool keyword overlapedges=<default>, int keyword nx=<default>, int keyword ny=<default>, int keyword nz=<default>, int keyword maxdepth=<default>, bool keyword usetriangles=<default>); string operator cast(edge e); string operator cast(edge[] edges); string operator cast(positionedvector vv); triple operator cast(evaluatedpoint p); -real B23(real t); -real B03(real t); -revolution sphere(triple c=<default>, real r, int n=<default>); -real[] tangent(path p, path q, bool side); -pen defaultbackpen; -revolution cone(triple c=<default>, real r, real h, triple axis=<default>, int n=<default>); -void draw(picture pic=<default>, revolution r, int m=<default>, int n=<default>, pen frontpen=<default>, pen backpen=<default>, pen longitudinalpen=<default>, pen longitudinalbackpen=<default>, light light=<default>, string name=<default>, render render=<default>, projection P=<default>); -revolution operator *(real[][] t, revolution r); +real[] projecttospan_findcoeffs(triple toproject, triple v1, triple v2, bool warn=<default>); +int YLOW; +int ZLOW; +int ZHIGH; +real angledegrees(triple a, triple b); +path3 pathbetween(positionedvector v1, positionedvector v2); +path3 pathbetween(path3 edgecycle, int vertex1, int vertex2); +patch[] maketriangle(path3 external, real f(triple), triple grad(triple), bool allowsubdivide=<default>); +path3 pathinface(positionedvector v1, positionedvector v2, triple facenorm, triple edge1normout, triple edge2normout); +path3 pathinface(positionedvector v1, positionedvector v2, int face, int edge1face, int edge2face); +evaluatedpoint[][][] make3dgrid(triple a, triple b, int nx, int ny, int nz, real f(triple), bool allowzero=<default>); +int XLOW; +int[] makecircle(edge[] edges); path[] cylinder(path3 base, real h, triple axis=<default>, projection P); revolution cylinder(triple c=<default>, real r, real h, triple axis=<default>); path line(path p, path q, real[] t); +pen defaultbackpen; +revolution cone(triple c=<default>, real r, real h, triple axis=<default>, int n=<default>); +revolution operator *(real[][] t, revolution r); +revolution sphere(triple c=<default>, real r, int n=<default>); +void draw(picture pic=<default>, revolution r, int m=<default>, int n=<default>, pen frontpen=<default>, pen backpen=<default>, pen longitudinalpen=<default>, pen longitudinalbackpen=<default>, light light=<default>, string name=<default>, render render=<default>, projection P=<default>); skeleton operator init(); revolution operator init(); +real[] tangent(path p, path q, bool side); surface surface(revolution r, int n=<default>, pen color(int i, real j)=<default>); +linefit leastsquares(real[] x, real[] y); +real Gaussrand(); pair Gaussrandpair(); -void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>); -void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>); -path topbox(pair a, pair b); -path halfbox(pair a, pair b); int[] frequency(real[] data, real[] bins); int[] frequency(real[] data, real a, real b, int n); int[][] frequency(real[] x, real[] y, real[] xbins, real[] ybins); int[][] frequency(real[] x, real[] y, pair a, pair b, int nx, int ny=<default>); int[][] frequency(pair[] z, pair a, pair b, int nx, int ny=<default>); -real Gaussian(real x, real sigma); -real Gaussian(real x); -real kurtosisexcess(real[] A); real kurtosis(real[] A); -real rms(real[] A); -real variancebiased(real[] A); real stdev(real[] A); +real variancebiased(real[] A); real variance(real[] A); real legendmarkersize; -real mean(real[] A); -real skewness(real[] A); -linefit leastsquares(real[] x, real[] y); -int bins(real[] data, int max=<default>); -real Gaussrand(); +real rms(real[] A); +void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>); +void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>); +real kurtosisexcess(real[] A); +real Gaussian(real x, real sigma); +real Gaussian(real x); linefit operator init(); -Relation r4b; +int bins(real[] data, int max=<default>); +real skewness(real[] A); +path topbox(pair a, pair b); +path halfbox(pair a, pair b); +real mean(real[] A); Relation r4a; -Relation r3; picture tableau(frame[] cards, bool number=<default>); Braid apply(Relation r, Braid b, int step, int place); -real gapfactor; -real hwratio; -Component bp; -Relation operator -(Relation r); +Component wye; Component phi; -pair max(pair[] z); +Component bm; +real gapfactor; pair[] endpoints(guide[] a); +Relation r4b; Component operator init(); Braid operator init(); Relation operator init(); Syzygy operator init(); -Component bm; -Component wye; pair min(pair[] z); +real hwratio; +Component bp; +Relation operator -(Relation r); +pair max(pair[] z); +Relation r3; pen Tan; +pen Brown; pen OliveGreen; -pen LimeGreen; +pen SeaGreen; +pen JungleGreen; pen BlueGreen; -pen Aquamarine; -pen TealBlue; -pen Turquoise; -pen SkyBlue; pen NavyBlue; -pen CornflowerBlue; -pen Periwinkle; +pen CadetBlue; +pen BlueViolet; pen RoyalPurple; pen Plum; -pen White; -pen Purple; pen DarkOrchid; pen Lavender; -pen Mulberry; +pen Fuchsia; +pen Rhodamine; pen CarnationPink; +pen Gray; pen Salmon; +pen RubineRed; pen OrangeRed; -pen Red; pen BrickRed; -pen YellowOrange; -pen Apricot; +pen Maroon; +pen Mahogany; +pen BurntOrange; +pen Melon; +pen Dandelion; pen Goldenrod; pen GreenYellow; -pen RedViolet; -pen Bittersweet; +pen Peach; pen VioletRed; -pen Violet; -pen Sepia; -pen Mahogany; -pen RubineRed; -pen WildStrawberry; +pen Cerulean; +pen White; +pen Yellow; +pen PineGreen; +pen RedViolet; +pen Red; +pen Magenta; +pen Turquoise; +pen MidnightBlue; +pen ProcessBlue; pen Black; +pen Bittersweet; +pen SkyBlue; +pen Aquamarine; +pen Orchid; pen RawSienna; pen Thistle; -pen Blue; -pen Maroon; -pen Yellow; -pen SeaGreen; -pen Rhodamine; -pen Fuchsia; +pen SpringGreen; +pen Periwinkle; +pen Sepia; +pen TealBlue; +pen LimeGreen; pen YellowGreen; -pen Green; +pen Violet; pen ForestGreen; -pen Cerulean; +pen Mulberry; pen Cyan; -pen PineGreen; -pen Dandelion; -pen BlueViolet; -pen RedOrange; -pen CadetBlue; -pen Orchid; -pen Magenta; -pen Emerald; -pen JungleGreen; -pen SpringGreen; -pen BurntOrange; -pen Gray; -pen Brown; -pen MidnightBlue; +pen Blue; pen Orange; -pen ProcessBlue; +pen CornflowerBlue; +pen Emerald; +pen WildStrawberry; +pen RedOrange; pen RoyalBlue; -pen Melon; -pen Peach; +pen Apricot; +pen Purple; +pen YellowOrange; +pen Green; int lookup(tree t, int key); bool contains(tree t, int key); -tree newtree(); tree add(tree t, int key, int value); tree operator init(); void write(file out=<default>, tree t); -real trembleRandom; -real magneticRadius; -real trembleAngle; +tree newtree(); real trembleFrequency; real trembleFuzz(); +real magneticRadius; tremble operator init(); -int coloredSegments; -path3 roundedpath(path3 A, real r); -surface tube(path3 g, coloredpath section, transform T(real)=<default>, real corner=<default>, real relstep=<default>); -surface surface(rmf[] R, real[] t, coloredpath cp, transform T(real), bool cyclic); -int coloredNodes; +real trembleRandom; +real trembleAngle; real degrees(rmf a, rmf b); -real[] sample(path3 g, real r, real relstep=<default>); -coloredpath operator init(); +int coloredNodes; +path3 roundedpath(path3 A, real r); coloredpath operator cast(path p); coloredpath operator cast(guide p); +surface tube(path3 g, coloredpath section, transform T(real)=<default>, real corner=<default>, real relstep=<default>); +coloredpath operator init(); +real[] sample(path3 g, real r, real relstep=<default>); +surface surface(rmf[] R, real[] t, coloredpath cp, transform T(real), bool cyclic); +int coloredSegments; string VERSION; -pen Turquoise; -pen Teal; +pen Tomato; pen Tan; -pen SkyBlue; -pen Silver; -pen Seashell; -pen SaddleBrown; -pen White; -pen Purple; +pen Snow; +pen Sienna; +pen SeaGreen; +pen RosyBrown; pen PowderBlue; pen Plum; -pen Red; pen Pink; -pen PeachPuff; -pen PapayaWhip; +pen PaleVioletRed; pen PaleTurquoise; -pen PaleGreen; pen OrangeRed; -pen OliveDrab; pen OldLace; -pen Salmon; +pen Navy; +pen NavajoWhite; pen Moccasin; +pen MistyRose; pen MintCream; -pen MediumTurquoise; -pen MediumSpringGreen; -pen MediumSlateBlue; -pen MediumSeaGreen; -pen MediumPurple; -pen MediumBlue; -pen MediumAquamarine; -pen LimeGreen; +pen Maroon; pen LightYellow; +pen LightSlateGray; pen LightSkyBlue; -pen LightSeaGreen; -pen PaleGoldenrod; pen LightSalmon; pen LightPink; -pen LightGrey; pen LightGreen; -pen LightCyan; -pen LightBlue; pen LemonChiffon; +pen LawnGreen; pen Lavender; -pen Indigo; -pen IndianRed; +pen Khaki; pen HotPink; pen Honeydew; pen GreenYellow; +pen Salmon; +pen SaddleBrown; +pen Gray; +pen IndianRed; pen Goldenrod; -pen Sienna; -pen Gold; -pen Gainsboro; -pen FloralWhite; -pen FireBrick; -pen DodgerBlue; -pen DarkViolet; -pen DarkTurquoise; +pen Fuchsia; +pen DimGray; +pen DeepSkyBlue; +pen DeepPink; pen DarkSlateGray; -pen DarkSeaGreen; +pen DarkSalmon; pen DarkOrchid; pen DarkOrange; -pen Navy; -pen LightSlateGray; pen DarkOliveGreen; pen DarkMagenta; -pen Tomato; -pen DarkKhaki; pen DarkGreen; -pen DarkGray; -pen DarkCyan; +pen DarkGoldenrod; +pen DarkBlue; pen Crimson; pen Cornsilk; -pen LightSteelBlue; -pen CornflowerBlue; -pen Chocolate; -pen Chartreuse; +pen Coral; +pen PapayaWhip; +pen CadetBlue; pen BurlyWood; +pen LightCoral; +pen Brown; +pen BlueViolet; +pen Beige; pen Azure; -pen Aquamarine; -pen NavajoWhite; -pen SlateGray; -pen Violet; -pen DarkBlue; -pen RosyBrown; -pen Olive; -pen DeepSkyBlue; -pen Snow; -pen BlanchedAlmond; -pen LavenderBlush; -pen Black; -pen Bisque; -pen DarkGoldenrod; -pen Thistle; -pen DarkRed; -pen Khaki; -pen Blue; -pen Maroon; -pen Yellow; -pen DeepPink; -pen Fuchsia; +pen Indigo; +pen SlateBlue; +pen OliveDrab; +pen DarkKhaki; +pen Peru; +pen PeachPuff; pen Lime; +pen LightGoldenrodYellow; +pen DarkSeaGreen; +pen MidnightBlue; +pen White; +pen Yellow; +pen LightCyan; +pen GhostWhite; +pen Ivory; +pen Red; +pen Magenta; +pen LightSeaGreen; +pen DarkViolet; +pen Turquoise; pen AntiqueWhite; -pen DimGray; -pen MistyRose; +pen WhiteSmoke; +pen Bisque; +pen PaleGreen; +pen PaleGoldenrod; +pen Black; +pen SkyBlue; +pen LightBlue; pen ForestGreen; -pen Green; +pen LightGrey; +pen AliceBlue; pen Orchid; +pen SandyBrown; +pen LavenderBlush; +pen Thistle; +pen MediumVioletRed; +pen FloralWhite; +pen BlanchedAlmond; +pen Linen; +pen Olive; +pen SpringGreen; +pen LimeGreen; +pen FireBrick; +pen Gold; +pen YellowGreen; +pen MediumSpringGreen; pen SteelBlue; -pen DarkSalmon; -pen SeaGreen; -pen Peru; -pen AliceBlue; -pen Cyan; -pen BlueViolet; -pen CadetBlue; -pen Magenta; pen Aqua; -pen GhostWhite; -pen MediumOrchid; -pen YellowGreen; -pen WhiteSmoke; -pen LawnGreen; -pen Brown; -pen SpringGreen; -pen Beige; -pen Coral; -pen LightCoral; -pen PaleVioletRed; -pen Gray; -pen MidnightBlue; +pen Violet; pen rgbint(int r, int g, int b); -pen SlateBlue; -pen Ivory; -pen Orange; -pen RoyalBlue; +pen Cyan; +pen Blue; +pen Teal; +pen MediumBlue; +pen Chartreuse; pen DarkSlateBlue; -pen MediumVioletRed; +pen SlateGray; pen Wheat; -pen SandyBrown; -pen Linen; -pen LightGoldenrodYellow; +pen Orange; +pen CornflowerBlue; +pen Seashell; +pen DarkGray; +pen MediumOrchid; +pen Chocolate; +pen MediumPurple; +pen DodgerBlue; +pen DarkRed; +pen DarkCyan; +pen MediumSeaGreen; +pen MediumSlateBlue; +pen RoyalBlue; +pen Silver; +pen MediumAquamarine; +pen Purple; +pen MediumTurquoise; +pen DarkTurquoise; +pen LightSteelBlue; +pen Green; +pen Gainsboro; +pen Aquamarine; diff --git a/Build/source/utils/asymptote/asymptote.nsi b/Build/source/utils/asymptote/asymptote.nsi index a3561569443..9f75c70cdce 100644 --- a/Build/source/utils/asymptote/asymptote.nsi +++ b/Build/source/utils/asymptote/asymptote.nsi @@ -65,7 +65,7 @@ var ICONS_GROUP Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "asymptote-${PRODUCT_VERSION}-setup.exe" -InstallDir "$PROGRAMFILES\Asymptote" +InstallDir "$PROGRAMFILES64\Asymptote" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails show ShowUnInstDetails show @@ -73,9 +73,6 @@ ShowUnInstDetails show Section "Asymptote" SEC01 SetOutPath "$INSTDIR" ${EnvVarUpdate} $0 "PATH" "A" "HKLM" "$INSTDIR" - Delete "$INSTDIR\_imagingtk.pyd" - Delete "$INSTDIR\opengl32.dll" - Delete "$INSTDIR\glu32.dll" SetOverwrite try File /r build-${PRODUCT_VERSION}\* diff --git a/Build/source/utils/asymptote/asymptote.spec b/Build/source/utils/asymptote/asymptote.spec index b232f40d4c1..e2622423102 100644 --- a/Build/source/utils/asymptote/asymptote.spec +++ b/Build/source/utils/asymptote/asymptote.spec @@ -1,7 +1,7 @@ %{!?_texmf: %global _texmf %(eval "echo `kpsewhich -expand-var '$TEXMFLOCAL'`")} Name: asymptote -Version: 2.41 +Version: 2.42 Release: 1%{?dist} Summary: Descriptive vector graphics language diff --git a/Build/source/utils/asymptote/base/geometry.asy b/Build/source/utils/asymptote/base/geometry.asy index 2bc062f3560..245c59ec084 100644 --- a/Build/source/utils/asymptote/base/geometry.asy +++ b/Build/source/utils/asymptote/base/geometry.asy @@ -1296,7 +1296,7 @@ void perpendicularmark(picture pic = currentpicture, point z, relative to the path z--z + dir. dir(45 + n * 90), where n in N*, are common values for 'align'.</documentation></function></asyxml>*/ p = squarecap + miterjoin + p; - if(size == 0) size = perpfactor * 3mm + sqrt(1 + linewidth(p)) - 1; + if(size == 0) size = perpfactor * 3mm + linewidth(p) / 2; frame apic; pair d1 = size * align * unit(dir) * dir(-45); pair d2 = I * d1; diff --git a/Build/source/utils/asymptote/base/ode.asy b/Build/source/utils/asymptote/base/ode.asy index 51941844fc4..7104a8d1532 100644 --- a/Build/source/utils/asymptote/base/ode.asy +++ b/Build/source/utils/asymptote/base/ode.asy @@ -264,7 +264,7 @@ solution integrate(real y, real c=0, real f(real t, real y), real a, real b=a, { solution S; S.t=new real[] {a}; - S.y=new real[]{y}; + S.y=new real[] {y}; if(h == 0) { if(b == a) return S; @@ -323,6 +323,7 @@ solution integrate(real y, real c=0, real f(real t, real y), real a, real b=a, } else { t += h; y=y0+highOrder; + S.t.push(t); S.y.push(y); } } diff --git a/Build/source/utils/asymptote/base/plain_Label.asy b/Build/source/utils/asymptote/base/plain_Label.asy index 1e424ab1c0a..516ed4be711 100644 --- a/Build/source/utils/asymptote/base/plain_Label.asy +++ b/Build/source/utils/asymptote/base/plain_Label.asy @@ -1,7 +1,7 @@ real angle(transform t) { pair z=(2t.xx*t.yy,t.yx*t.yy-t.xx*t.xy); - if(t.xx < 0) z=-z; + if(t.xx < 0 || t.yy < 0) z=-z; return degrees(z,warn=false); } diff --git a/Build/source/utils/asymptote/base/plain_strings.asy b/Build/source/utils/asymptote/base/plain_strings.asy index a88e3863416..c109fc491f7 100644 --- a/Build/source/utils/asymptote/base/plain_strings.asy +++ b/Build/source/utils/asymptote/base/plain_strings.asy @@ -85,7 +85,7 @@ string verbatim(string s) // Split a string into an array of substrings delimited by delimiter // If delimiter is an empty string, use space delimiter but discard empty -// substrings. +// substrings. TODO: Move to C++ code. string[] split(string s, string delimiter="") { bool prune=false; @@ -109,6 +109,27 @@ string[] split(string s, string delimiter="") return S; } +// Returns an array of strings obtained by splitting s into individual +// characters. TODO: Move to C++ code. +string[] array(string s) +{ + int len=length(s); + string[] S=new string[len]; + for(int i=0; i < len; ++i) + S[i]=substr(s,i,1); + return S; +} + +// Concatenate an array of strings into a single string. +// TODO: Move to C++ code. +string operator +(...string[] a) +{ + string S; + for(string s : a) + S += s; + return S; +} + int system(string s) { return system(split(s)); @@ -208,19 +229,10 @@ void pause(string w="Hit enter to continue") w=stdin; } -string math(real x) -{ - return math((string) x); -} - -string format(string format, real x, string locale="") -{ - return format(format,defaultseparator,x,locale); -} - -string format(real x, string locale="") +string format(string format=defaultformat, bool forcemath=false, real x, + string locale="") { - return format(defaultformat,defaultseparator,x,locale); + return format(format,forcemath,defaultseparator,x,locale); } string phantom(string s) diff --git a/Build/source/utils/asymptote/base/rational.asy b/Build/source/utils/asymptote/base/rational.asy new file mode 100644 index 00000000000..0fa4ee36afa --- /dev/null +++ b/Build/source/utils/asymptote/base/rational.asy @@ -0,0 +1,223 @@ +// Asymptote module implementing rational arithmetic. + +int gcd(int m, int n) +{ + if(m < n) { + int temp=m; + m=n; + n=temp; + } + while(n != 0) { + int r=m % n; + m=n; + n=r; + } + return m; +} + +int lcm(int m, int n) +{ + return m#gcd(m,n)*n; +} + +struct rational { + int p=0,q=1; + void reduce() { + int d=gcd(p,q); + if(abs(d) > 1) { + p #= d; + q #= d; + } + if(q <= 0) { + if(q == 0) abort("Division by zero"); + p=-p; + q=-q; + } + } + void operator init(int p=0, int q=1, bool reduce=true) { + this.p=p; + this.q=q; + if(reduce) reduce(); + } +} + +rational operator cast(int p) { + return rational(p,false); +} + +rational[] operator cast(int[] a) { + return sequence(new rational(int i) {return a[i];},a.length); +} + +rational[][] operator cast(int[][] a) { + return sequence(new rational[](int i) {return a[i];},a.length); +} + +real operator ecast(rational r) { + return r.p/r.q; +} + +rational operator -(rational r) +{ + return rational(-r.p,r.q,false); +} + +rational operator +(rational r, rational s) +{ + return rational(r.p*s.q+s.p*r.q,r.q*s.q); +} + +rational operator -(rational r, rational s) +{ + return rational(r.p*s.q-s.p*r.q,r.q*s.q); +} + +rational operator *(rational r, rational s) +{ + return rational(r.p*s.p,r.q*s.q); +} + +rational operator /(rational r, rational s) +{ + return rational(r.p*s.q,r.q*s.p); +} + +bool operator ==(rational r, rational s) +{ + return r.p == s.p && r.q == s.q; +} + +bool operator <(rational r, rational s) +{ + return r.p*s.q-s.p*r.q < 0; +} + +bool operator >(rational r, rational s) +{ + return r.p*s.q-s.p*r.q > 0; +} + +bool operator <=(rational r, rational s) +{ + return r.p*s.q-s.p*r.q <= 0; +} + +bool operator >=(rational r, rational s) +{ + return r.p*s.q-s.p*r.q >= 0; +} + +bool[] operator ==(rational[] r, rational s) +{ + return sequence(new bool(int i) {return r[i] == s;},r.length); +} + +bool operator ==(rational[] r, rational[] s) +{ + if(r.length != s.length) + abort(" operation attempted on arrays of different lengths: "+ + string(r.length)+" != "+string(s.length)); + return all(sequence(new bool(int i) {return r[i] == s[i];},r.length)); +} + +bool operator ==(rational[][] r, rational[][] s) +{ + if(r.length != s.length) + abort(" operation attempted on arrays of different lengths: "+ + string(r.length)+" != "+string(s.length)); + return all(sequence(new bool(int i) {return r[i] == s[i];},r.length)); +} + +rational min(rational a, rational b) +{ + return a <= b ? a : b; +} + +rational max(rational a, rational b) +{ + return a >= b ? a : b; +} + + +void write(string s="", rational r, suffix suffix=endl) { + if(r.q == 1) + write(s+string(r.p),suffix); + else + write(s+string(r.p)+"/"+string(r.q),suffix); +} + +void write(string s="", rational[] a, suffix suffix=endl) { + if(s != "") + write(s); + for(int i=0; i < a.length; ++i) { + write(i,none); + write(':\t',a[i]); + } + write(suffix); +} + +void write(string s="", rational[][] a, suffix suffix=endl) { + if(s != "") + write(s); + for(int i=0; i < a.length; ++i) { + rational[] ai=a[i]; + for(int j=0; j < ai.length; ++j) { + write(ai[j],tab); + } + write(); + } + write(suffix); +} + +bool rectangular(rational[][] m) +{ + int n=m.length; + if(n > 0) { + int m0=m[0].length; + for(int i=1; i < n; ++i) + if(m[i].length != m0) return false; + } + return true; +} + +rational sum(rational[] a) +{ + rational sum; + for(rational r:a) + sum += r; + return sum; +} + +rational max(rational[] a) +{ + rational M=a[0]; + for(rational r:a) + M=max(M,r); + return M; +} + +rational abs(rational r) +{ + return rational(abs(r.p),r.q,false); +} + + +/* +rational r=rational(1,3)+rational(1,4); +write(r == rational(1,12)); +write(r); +real x=r; +write(x); + +rational r=3; +write(r); + +write(gcd(-8,12)); +write(rational(-36,-14)); + +int[][] a=new int[][] {{1,2},{3,4}}; +rational[][] r=a; +write(r); + +*/ + diff --git a/Build/source/utils/asymptote/base/slide.asy b/Build/source/utils/asymptote/base/slide.asy index 433426c2f37..6195a97ec01 100644 --- a/Build/source/utils/asymptote/base/slide.asy +++ b/Build/source/utils/asymptote/base/slide.asy @@ -43,6 +43,8 @@ pen urlpen=datepen; real itemskip=0.5; real codeskip=0.25; +real aboveequationskip=-1.25; + pair dateskip=(0,0.1); pair urlskip=(0,0.2); @@ -165,6 +167,7 @@ normalvideo(); texpreamble(bulletcolor(newbulletcolor)); texpreamble("\hyphenpenalty=10000\tolerance=1000"); +texpreamble("\usepackage{amsmath}"); // Evaluate user command line option. void usersetting() @@ -309,24 +312,29 @@ void center(string s, pen p=itempen) remark("\center "+s,p); } -void equation(string s, pen p=itempen) +void vbox(string s, pen p=itempen) { - remark(center=true,"\vbox{$$"+s+"$$}",p,minipage=false,skip=0); + remark(center=true,"\vbox{"+s+"}",p,minipage=false,skip=0); } -void vbox(string s, pen p=itempen) +void skip(real n=1) { - remark(center=true,"\vbox{"+s+"}",p,minipage=false,skip=0); + incrementposition((0,(tinv*(-n*itemskip*I*lineskip(itempen)*pt)).y)); } -void equations(string s, pen p=itempen) +void equation(string s, pen p=itempen) { - vbox("\begin{eqnarray*}"+s+"\end{eqnarray*}",p); + skip(aboveequationskip); + vbox("\begin{gather*}"+s+"\end{gather*}",p); } -void skip(real n=1) +void equations(string s, pen p=itempen) { - incrementposition((0,(tinv*(-n*itemskip*I*lineskip(itempen)*pt)).y)); + skip(aboveequationskip); + if(find(s,"&") >= 0) + vbox("\begin{align*}"+s+"\end{align*}",p); + else + vbox("\begin{gather*}"+s+"\end{gather*}",p); } void display(frame[] f, real margin=0, pair align=S, pen p=itempen, diff --git a/Build/source/utils/asymptote/bezierpatch.cc b/Build/source/utils/asymptote/bezierpatch.cc index f076d4643ac..34b80f05b6d 100644 --- a/Build/source/utils/asymptote/bezierpatch.cc +++ b/Build/source/utils/asymptote/bezierpatch.cc @@ -6,11 +6,16 @@ *****/ #include "bezierpatch.h" +#include "predicates.h" namespace camp { +using ::orient2d; +using ::orient3d; + size_t tstride; -GLfloat *B; + +double viewpoint[3]; #ifdef HAVE_GL @@ -23,6 +28,41 @@ std::vector<GLuint> BezierPatch::tindices; std::vector<GLfloat> BezierPatch::tBuffer; std::vector<GLuint> BezierPatch::tIndices; +std::vector<GLuint>& I=BezierPatch::tIndices; +std::vector<GLfloat>& V=BezierPatch::tBuffer; +bool colors; + +std::vector<GLfloat> zbuffer; +std::vector<GLfloat> xbuffer; +std::vector<GLfloat> ybuffer; + +std::vector<GLfloat> xmin,ymin,zmin; +std::vector<GLfloat> xmax,ymax,zmax; +std::vector<GLfloat> zsum; + +inline double min(double a, double b, double c) +{ + return min(min(a,b),c); +} + +inline double max(double a, double b, double c) +{ + return max(max(a,b),c); +} + +struct iz { + unsigned i; + double z; + iz() {} + void minimum(unsigned i, const std::vector<GLuint>& I) { + this->i=i; + unsigned i3=3*i; + z=min(zbuffer[I[i3]],zbuffer[I[i3+1]],zbuffer[I[i3+2]]); + } +}; + +std::vector<iz> IZ; + GLuint BezierPatch::nvertices=0; GLuint BezierPatch::ntvertices=0; GLuint BezierPatch::Nvertices=0; @@ -33,31 +73,235 @@ extern const double Fuzz2; const double FillFactor=0.1; const double BezierFactor=0.4; -// Partially work around OpenGL transparency bug by sorting transparent -// triangles by their centroid depth. -int compare(const void *a, const void *b) +inline int sgn1(double x) +{ + return x >= 0.0 ? 1 : -1; +} + +inline int sgn(double x) +{ + return (x > 0.0 ? 1 : (x < 0.0 ? -1 : 0)); +} + +bool sameside(const double *a, const double *b, int s0, const double *A, + const double *B, const double *C) +{ + if(sgn(orient2d(a,b,A)) == s0) return true; + if(sgn(orient2d(a,b,B)) == s0) return true; + if(sgn(orient2d(a,b,C)) == s0) return true; + return false; +} + +// returns true iff 2D triangles abc and ABC intersect +bool intersect2D(const double *a, const double *b, const double *c, + const double *A, const double *B, const double *C) +{ + int s0=sgn(orient2d(a,b,c)); // Optimize away + int S0=sgn(orient2d(A,B,C)); // Optimize away + return + sameside(a,b,s0,A,B,C) && + sameside(b,c,s0,A,B,C) && + sameside(c,a,s0,A,B,C) && + sameside(A,B,S0,a,b,c) && + sameside(B,C,S0,a,b,c) && + sameside(C,A,S0,a,b,c); +} + +// returns true iff triangle abc is pierced by line segment AB. +bool pierce(const double *a, const double *b, const double *c, const double *A, const double *B) +{ + int sa=sgn(orient3d(A,b,c,B)); + int sb=sgn(orient3d(A,c,a,B)); + int sc=sgn(orient3d(A,a,b,B)); + return sa == sb && sb == sc; +} + +// returns true iff triangle abc is pierced by an edge of triangle ABC +bool intersect0(const double *a, const double *b, const double *c, + const double *A, const double *B, const double *C, + int sA, int sB, int sC) +{ + if(sA != sB) { + if(pierce(a,b,c,A,B)) return true; + if(sC != sA) { + if(pierce(a,b,c,C,A)) return true; + } else { + if(pierce(a,b,c,B,C)) return true; + } + } else { + if(pierce(a,b,c,B,C)) return true; + if(pierce(a,b,c,C,A)) return true; + } + return false; +} + +// returns true iff triangle abc intersects triangle ABC +bool intersect3D(const double *a, const double *b, const double *c, + const double *A, const double *B, const double *C) +{ + int sA=sgn(orient3d(a,b,c,A)); + int sB=sgn(orient3d(a,b,c,B)); + int sC=sgn(orient3d(a,b,c,C)); + if(sA == sB && sB == sC) return false; + + int sa=sgn(orient3d(A,B,C,a)); + int sb=sgn(orient3d(A,B,C,b)); + int sc=sgn(orient3d(A,B,C,c)); + if(sa == sb && sb == sc) return false; + + return intersect0(a,b,c,A,B,C,sA,sB,sC) || intersect0(A,B,C,a,b,c,sa,sb,sc); +} + +// Return the intersection time of the extension of the line segment PQ +// with the plane perpendicular to n and passing through Z. +inline double intersect(const double *P, const double *Q, const double *n, + const double *Z) +{ + double d=n[0]*Z[0]+n[1]*Z[1]+n[2]*Z[2]; + double denom=n[0]*(Q[0]-P[0])+n[1]*(Q[1]-P[1])+n[2]*(Q[2]-P[2]); + return denom == 0 ? DBL_MAX : (d-n[0]*P[0]-n[1]*P[1]-n[2]*P[2])/denom; +} + +inline triple interp(const double *a, const double *b, double t) +{ + return triple(a[0]+t*(b[0]-a[0]),a[1]+t*(b[1]-a[1]),a[2]+t*(b[2]-a[2])); +} + +inline void interp(GLfloat *dest, + const GLfloat *a, const GLfloat *b, double t) +{ + double onemt=1.0-t; + for(size_t i=0; i < 4; ++i) + dest[i]=onemt*a[i]+t*b[i]; +} + +inline triple interp(const triple& a, const triple& b, double t) { - size_t a0=tstride*((GLuint *) a)[0]; - size_t a1=tstride*((GLuint *) a)[1]; - size_t a2=tstride*((GLuint *) a)[2]; + return a+(b-a)*t; +} + +inline void cross(double *dest, const double *u, const double *v, + const double *w) +{ + double u0=u[0]-w[0]; + double u1=u[1]-w[1]; + double u2=u[2]-w[2]; + double v0=v[0]-w[0]; + double v1=v[1]-w[1]; + double v2=v[2]-w[2]; + dest[0]=u1*v2-u2*v1; + dest[1]=u2*v0-u0*v2; + dest[2]=u0*v1-u1*v0; +} + +unsigned n; +unsigned int count; +const size_t nbuffer=10000; + +// Sort nonintersecting triangles by depth. +int compare(const void *p, const void *P) +{ + unsigned Ia=((GLuint *) p)[0]; + unsigned Ib=((GLuint *) p)[1]; + unsigned Ic=((GLuint *) p)[2]; + + unsigned IA=((GLuint *) P)[0]; + unsigned IB=((GLuint *) P)[1]; + unsigned IC=((GLuint *) P)[2]; + + return zbuffer[Ia]+zbuffer[Ib]+zbuffer[Ic] < + zbuffer[IA]+zbuffer[IB]+zbuffer[IC] ? -1 : 1; + + /* + double a[]={xbuffer[Ia],ybuffer[Ia],zbuffer[Ia]}; + double b[]={xbuffer[Ib],ybuffer[Ib],zbuffer[Ib]}; + double c[]={xbuffer[Ic],ybuffer[Ic],zbuffer[Ic]}; + + double A[]={xbuffer[IA],ybuffer[IA],zbuffer[IA]}; + double B[]={xbuffer[IB],ybuffer[IB],zbuffer[IB]}; + double C[]={xbuffer[IC],ybuffer[IC],zbuffer[IC]}; + + double viewpoint[]={0,0,100000}; - size_t b0=tstride*((GLuint *) b)[0]; - size_t b1=tstride*((GLuint *) b)[1]; - size_t b2=tstride*((GLuint *) b)[2]; - - double x= - T[0]*(B[a0]+B[a1]+B[a2]-B[b0]-B[b1]-B[b2])+ - T[1]*(B[a0+1]+B[a1+1]+B[a2+1]-B[b0+1]-B[b1+1]-B[b2+1])+ - T[2]*(B[a0+2]+B[a1+2]+B[a2+2]-B[b0+2]-B[b1+2]-B[b2+2]); - if(x > 0.0) return 1; - if(x < 0.0) return -1; - return 0; + double sa=-orient3d(A,B,C,a); + double sb=-orient3d(A,B,C,b); + double sc=-orient3d(A,B,C,c); + double s=min(sa,sb,sc); + double S=max(sa,sb,sc); + double eps=1000; + + if(s < -eps && S > eps) { //swap + double sA=-orient3d(a,b,c,A); + double sB=-orient3d(a,b,c,B); + double sC=-orient3d(a,b,c,C); + double s=min(sA,sB,sC); + double S=max(sA,sB,sC); + if(S < -s) S=s; + int sz=sgn1(orient3d(a,b,c,viewpoint)); + if(S < -eps) return -sz; + if(S > eps) return sz; + } + if(S < -s) S=s; + int sz=sgn1(orient3d(A,B,C,viewpoint)); + if(S < -eps) return sz; + if(S > eps) return -sz; + return a[2]+b[2]+c[2] < A[2]+B[2]+C[2] ? -1 : 1; + */ +} + +void split(unsigned i3, GLuint ia, GLuint ib, GLuint ic, + double *a, double *b, double *c, double *N, double *A) { + double td=intersect(a,b,N,A); + double te=intersect(a,c,N,A); + + triple d=interp(a,b,td); + triple e=interp(a,c,te); + + GLuint Ia=tstride*ia; + GLuint Ib=tstride*ib; + GLuint Ic=tstride*ic; + + triple na=triple(V[Ia+3],V[Ia+4],V[Ia+5]); + triple nb=triple(V[Ib+3],V[Ib+4],V[Ib+5]); + triple nc=triple(V[Ic+3],V[Ic+4],V[Ic+5]); + + triple nd=interp(na,nb,td); + triple ne=interp(na,nc,te); + + GLuint id,ie; + + if(colors) { + GLfloat *ca=&V[Ia+6]; + GLfloat *cb=&V[Ib+6]; + GLfloat *cc=&V[Ic+6]; + + GLfloat cd[4],ce[4]; + interp(cd,ca,cb,td); + interp(ce,ca,cc,te); + + id=BezierPatch::tVertex(d,nd,cd); + ie=BezierPatch::tVertex(e,ne,ce); + } else { + id=BezierPatch::tvertex(d,nd); + ie=BezierPatch::tvertex(e,ne); + } + + I[i3]=ia; + I[i3+1]=id; + I[i3+2]=ie; + + I.push_back(id); + I.push_back(ib); + I.push_back(ie); + + I.push_back(ie); + I.push_back(ib); + I.push_back(ic); } void BezierPatch::init(double res, const triple& Min, const triple& Max, bool transparent, GLfloat *colors) { - empty=false; res2=res*res; Res2=BezierFactor*BezierFactor*res2; Epsilon=FillFactor*res; @@ -65,6 +309,7 @@ void BezierPatch::init(double res, const triple& Min, const triple& Max, this->Max=Max; const size_t nbuffer=10000; + indices.reserve(nbuffer); if(transparent) { tbuffer.reserve(nbuffer); tindices.reserve(nbuffer); @@ -78,7 +323,6 @@ void BezierPatch::init(double res, const triple& Min, const triple& Max, } } else { buffer.reserve(nbuffer); - indices.reserve(nbuffer); pindices=&indices; pvertex=&vertex; if(colors) { @@ -586,25 +830,83 @@ void BezierTriangle::render(const triple *p, bool straight, GLfloat *c0) } } +void transform(const std::vector<GLfloat>& b) +{ + unsigned n=b.size()/tstride; +// xbuffer.resize(n); +// ybuffer.resize(n); + zbuffer.resize(n); + + for(unsigned i=0; i < n; ++i) { + unsigned j=tstride*i; +// xbuffer[i]=Tx[0]*b[j]+Tx[1]*b[j+1]+Tx[2]*b[j+2]; +// ybuffer[i]=Ty[0]*b[j]+Ty[1]*b[j+1]+Ty[2]*b[j+2]; + zbuffer[i]=Tz[0]*b[j]+Tz[1]*b[j+1]+Tz[2]*b[j+2]; + } + +} + +// precompute min and max bounds of each triangle +void bounds(const std::vector<GLuint>& I) +{ + unsigned n=I.size()/3; + xmin.resize(n); + xmax.resize(n); + ymin.resize(n); + ymax.resize(n); + zmin.resize(n); + zmax.resize(n); + + for(unsigned i=0; i < n; ++i) { + unsigned i3=3*i; + unsigned Ia=I[i3]; + unsigned Ib=I[i3+1]; + unsigned Ic=I[i3+2]; + + double xa=xbuffer[Ia]; + double xb=xbuffer[Ib]; + double xc=xbuffer[Ic]; + + double ya=ybuffer[Ia]; + double yb=ybuffer[Ib]; + double yc=ybuffer[Ic]; + + double za=zbuffer[Ia]; + double zb=zbuffer[Ib]; + double zc=zbuffer[Ic]; + + xmin[i]=min(xa,xb,xc); + xmax[i]=max(xa,xb,xc); + + ymin[i]=min(ya,yb,yc); + ymax[i]=max(ya,yb,yc); + + zmin[i]=min(za,zb,zc); + zmax[i]=max(za,zb,zc); + } +} + void BezierPatch::draw() { - if(empty) return; - size_t stride=6; - size_t Stride=10; - size_t size=sizeof(GLfloat); - size_t bytestride=stride*size; - size_t Bytestride=Stride*size; + if(nvertices == 0 && ntvertices == 0 && Nvertices == 0 && Ntvertices == 0) + return; + + const size_t stride=6; + const size_t Stride=10; + const size_t size=sizeof(GLfloat); + const size_t bytestride=stride*size; + const size_t Bytestride=Stride*size; glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); - if(indices.size()) { + if(nvertices > 0) { glVertexPointer(3,GL_FLOAT,bytestride,&buffer[0]); glNormalPointer(GL_FLOAT,bytestride,&buffer[3]); glDrawElements(GL_TRIANGLES,indices.size(),GL_UNSIGNED_INT,&indices[0]); } - if(Indices.size()) { + if(Nvertices > 0) { glEnableClientState(GL_COLOR_ARRAY); glEnable(GL_COLOR_MATERIAL); glVertexPointer(3,GL_FLOAT,Bytestride,&Buffer[0]); @@ -615,19 +917,25 @@ void BezierPatch::draw() glDisableClientState(GL_COLOR_ARRAY); } - if(tindices.size()) { - B=&tbuffer[0]; + if(ntvertices > 0) { tstride=stride; + transform(tbuffer); +// bounds(tindices); + qsort(&tindices[0],tindices.size()/3,3*sizeof(GLuint),compare); + glVertexPointer(3,GL_FLOAT,bytestride,&tbuffer[0]); glNormalPointer(GL_FLOAT,bytestride,&tbuffer[3]); glDrawElements(GL_TRIANGLES,tindices.size(),GL_UNSIGNED_INT,&tindices[0]); } - if(tIndices.size()) { - B=&tBuffer[0]; + if(Ntvertices > 0) { tstride=Stride; + transform(tBuffer); +// bounds(tIndices); + qsort(&tIndices[0],tIndices.size()/3,3*sizeof(GLuint),compare); + glEnableClientState(GL_COLOR_ARRAY); glEnable(GL_COLOR_MATERIAL); glVertexPointer(3,GL_FLOAT,Bytestride,&tBuffer[0]); diff --git a/Build/source/utils/asymptote/bezierpatch.h b/Build/source/utils/asymptote/bezierpatch.h index 826f65ac2c1..33c26cc506c 100644 --- a/Build/source/utils/asymptote/bezierpatch.h +++ b/Build/source/utils/asymptote/bezierpatch.h @@ -44,9 +44,8 @@ struct BezierPatch typedef GLuint VertexFunction(const triple &v, const triple& n, GLfloat *c); vertexFunction *pvertex; VertexFunction *pVertex; - bool empty; - BezierPatch() : empty(true) {} + BezierPatch() {} void init(double res, const triple& Min, const triple& Max, bool transparent, GLfloat *colors=NULL); @@ -192,7 +191,6 @@ struct BezierPatch } void clear() { - empty=true; nvertices=ntvertices=Nvertices=Ntvertices=0; buffer.clear(); indices.clear(); diff --git a/Build/source/utils/asymptote/build-scripts/HOWTO-MSWindows b/Build/source/utils/asymptote/build-scripts/HOWTO-MSWindows new file mode 100644 index 00000000000..d96a8fc9876 --- /dev/null +++ b/Build/source/utils/asymptote/build-scripts/HOWTO-MSWindows @@ -0,0 +1,86 @@ + Compiling MSWindows binary of Asymptote under CYGWIN-x86_64 + +First run build-asymptote on Linux. This will build the documentation +and source tar ball and copy them to a directory ~/shared which needs to be +shared via virtualbox to the cygwin build environment. + +Install these cygwin packages: + +wget +make +patch +gcc-g++ +autoconf +bison +flex +w32api-headers +w32api-runtime +zlib-devel +libGLU-devel +libtirpc-devel (SRC) +libncurses-devel (SRC) +libreadline-devel (SRC) +libfftw3-devel (SRC) +libgsl-devel (SRC) +automake +libtool + +ln -s /usr/include/tirpc/rpc /usr/include/rpc +ln -s /usr/include/tirpc/netconfig.h /usr/include/netconfig.h +ln -s /usr/lib/libtirpc.a /usr/lib/librpc.a + +mv /usr/include/GL /usr/include/GL.orig + +Build and install from /usr/local/src: + +gsl-devel +./configure --prefix=/usr +make install + +ncurses-devel +./configure --prefix=/usr +make install + +readline-devel +./configure --prefix=/usr --without-curses --disable-shared +make install + +fftw3-devel: +./configure --prefix=/usr --enable-shared +make install + +Compile static libraries from source: +tirpc-devel +./configure --prefix=/usr --disable-gssapi +make install + +termcap-1.3.1 +./configure --prefix=/usr +make install + +git clone http://github.com/vectorgraphics/asymptote + +cd /usr/include +patch -p0 < ~/asymptote/patches/cygwin_glu.patch + +cd +~/asymptote/build-scripts/build-freeglut +mkdir -p ~/dll/cygwin +cp /usr/bin/cygwin1.dll ~/dll/cygwin + +install texlive + +mkdir ~/CTAN +cp -a ~/asymptote/buildscripts/README-binaries ~/CTAN + +GCVERSION=7.6.2 +tar -zxf gc-$GCVERSION.tar.gz +tar -zxf libatomic_ops-$GCVERSION.tar.gz +mv libatomic_ops-$GCVERSION gc-$GCVERSION/libatomic_ops +cd gc-$GCVERSION +patch < ~/asymptote/patches/cygwin_gc.patch +./configure --disable-shared +make check + +VERSION=2.42 +~/asymptote/build-scripts/build-asymptote.dos $VERSION diff --git a/Build/source/utils/asymptote/build-scripts/README-binaries b/Build/source/utils/asymptote/build-scripts/README-binaries new file mode 100644 index 00000000000..8e4192121d9 --- /dev/null +++ b/Build/source/utils/asymptote/build-scripts/README-binaries @@ -0,0 +1,5 @@ +The Asymptote executable for MSWindows can only be released under the GNU +General Public License (GPL) as it is linked against the GNU Scientific +Library, GNU Readline library, and other GPL libraries. The Asymptote +source itself is released under the GNU Lesser General Public License. + diff --git a/Build/source/utils/asymptote/build-scripts/build-asymptote b/Build/source/utils/asymptote/build-scripts/build-asymptote new file mode 100755 index 00000000000..75ab3f46392 --- /dev/null +++ b/Build/source/utils/asymptote/build-scripts/build-asymptote @@ -0,0 +1,74 @@ +#!/bin/sh -x +# Usage: build-asymptote [suffix] + +HOME=~bowman +SHARED=$HOME/shared/asy + +GCVERSION=7.6.2 +ATOMICVERSION=7.6.2 +GC=gc-$GCVERSION + +MAKEFLAGS=-j8 +export MAKEFLAGS +ASYMPTOTE=$HOME/asymptote +BUILD=/usr/local/src +BINDIR=usr +test /usr -ef $BUILD/$BINDIR && exit +LATEXDIR=$BUILD/$BINDIR/share/texmf/tex/latex/asymptote +cd $BUILD +rm -rf asymptote +git clone http://github.com/vectorgraphics/asymptote +cd asymptote +git log > ChangeLog +VERSIONgit=`grep AC_INIT configure.ac | cut -s -d[ -f3 | cut -s -d] -f1` +VERSION=${VERSIONgit/git/} +cat configure.ac | sed -e "s/$VERSIONgit/$VERSION/" > configure.ac_ +mv configure.ac_ configure.ac +cat $ASYMPTOTE/asymptote.spec | sed -e "s|Version:.*|Version: $VERSION|" > asymptote.spec +SRC=asymptote-$VERSION.src.tgz +if [ $# == 0 ]; then + cp asymptote.spec $ASYMPTOTE +fi +cd $BUILD +rm -rf asymptote-$VERSION +rm -rf $BUILD/$BINDIR +mv asymptote asymptote-$VERSION +wget http://hboehm.info/gc/gc_source/gc-$GCVERSION.tar.gz +wget http://www.ivmaisoft.com/_bin/atomic_ops/libatomic_ops-$ATOMICVERSION.tar.gz +cp /usr/local/src/$GC.tar.gz asymptote-$VERSION +cp /usr/local/src/libatomic_ops-$ATOMICVERSION.tar.gz asymptote-$VERSION +chown -R root.root asymptote-$VERSION +cd asymptote-$VERSION +find . -type d -exec /bin/bash -c "cd '{}';rm -rf .git" \; +rm -f .gitignore +./autogen.sh +./configure +make $MAKEFLAGS check || exit +make uninstall +make $MAKEFLAGS asy +make -j1 all +make -j1 install +#rm asy +#make LFLAGS=-static +strip asy +make DESTDIR="$BUILD/" latexdir=$LATEXDIR install +#rm $GC.tar.gz +rm $BUILD/$BINDIR/local/info/dir +cp -a $BUILD/asymptote-$VERSION/ChangeLog . +cp -a $ASYMPTOTE/ReleaseNotes . +make distclean +rm -rf autom4te.cache +cd /usr/local/share/doc/asymptote +rm -rf $SHARED/asydoc +mkdir -p $SHARED/asydoc/png +mkdir -p $SHARED/asydoc/FAQ +cp -a *.pdf ../../man/man1/asy.1 $SHARED/asydoc +cp -a /usr/local/share/info/asymptote/asymptote.info $SHARED/asydoc/png +cp -a /usr/local/share/info/asy-faq.info $SHARED/asydoc/FAQ +cd $BUILD +tar cfz $SRC asymptote-$VERSION +tar cfz asymptote-$VERSION.i386.tgz $BINDIR +cp $SRC $SHARED +rm -rf $BUILD/$BINDIR +tar -zxf asymptote-$VERSION.i386.tgz +su rpmbuild -c "rpmbuild -ta --nodeps $SRC && rm -rf ~/rpms/BUILD/asymptote-$VERSION" diff --git a/Build/source/utils/asymptote/build-scripts/build-asymptote.dos b/Build/source/utils/asymptote/build-scripts/build-asymptote.dos new file mode 100755 index 00000000000..376e0da0558 --- /dev/null +++ b/Build/source/utils/asymptote/build-scripts/build-asymptote.dos @@ -0,0 +1,78 @@ +#!/bin/sh -x +GC=7.6.2 + +SHARED=~/shared/asy +MAKEFLAGS=-j8 +export MAKEFLAGS +VERSION=$1 +if [ -z $VERSION ]; then +VERSION=`grep AC_INIT configure.ac | cut -s -d[ -f3 | cut -s -d] -f1` +if [ -z $VERSION ]; then +echo Usage: $0 VERSION +exit +fi +else +echo Building asymptote-$VERSION +cd ~/ +rm -rf asymptote-$VERSION +mkdir -p CTAN +rm -rf CTAN/asymptote-$VERSION +tar -zxf $SHARED/asymptote-$VERSION.src.tgz -C CTAN +tar -zxf $SHARED/asymptote-$VERSION.src.tgz +mkdir -p CTAN/asymptote-$VERSION/binaries/i386-win32/texlive +cd asymptote-$VERSION +fi +BUILD=build-$VERSION +ln -sf ../gc-$GC.tar.gz . +ln -sf ../gc-$GC . +make -n MSDOS=1 >& /dev/null || ./configure OSTYPE=msdos --enable-gc=$GC --with-latex=/usr/local/share --with-context=/usr/local/share +rm -rf $BUILD +mkdir -p $BUILD +cp -a $HOME/dll/cygwin/*.dll $HOME/dll/*.dll $BUILD +chmod 0644 $BUILD/*.dll +cp -a $BUILD/*.dll ~/CTAN/asymptote-$VERSION/binaries/i386-win32/ +cp -a $HOME/dll/*.dll . +make MSDOS=1 DESTDIR="$BUILD/" docdir="$BUILD/" +test -f asy.list || make MSDOS=1 keywords DESTDIR="$BUILD/" docdir="$BUILD/" +make MSDOS=1 install-asy DESTDIR="$BUILD/" docdir="$BUILD/" +cp asy.ico README LICENSE* $BUILD +pushd $BUILD +mv usr/local/bin/* . +mv usr/local/share/asymptote/GUI/*.py . +rm -rf usr/local/share/asymptote/GUI +mv usr/local/share/asymptote/* . +cp $SHARED/asydoc/*.pdf . +rm -rf bin share doc usr +popd +echo \!define PRODUCT_VERSION \"$VERSION\" > AsymptoteInstallInfo.nsi +# generate uninstallation commands +ls -p1 $BUILD \ + | awk '{ if(index($0,"/")==length($0)) print "RMDir /r $INSTDIR\\" substr($0,0,length($0)-1); else print "Delete $INSTDIR\\" $0 }' \ + > AsymptoteUninstallList.nsi + +/cygdrive/c/Program\ Files\ \(x86\)/NSIS/makensis.exe asymptote.nsi +cp -a --no-preserve=mode asymptote-$VERSION-setup.exe $SHARED +mv asymptote-$VERSION-setup.exe ~/ + +cd ~/ +rm -rf asymptote-${VERSION}TL || exit +cp -a asymptote-$VERSION asymptote-${VERSION}TL +sed asymptote-$VERSION/config.h -e 's/ASYMPTOTE_SYSDIR ".*"/ASYMPTOTE_SYSDIR ""/g' > asymptote-${VERSION}TL/config.h +sed asymptote-$VERSION/configure.ac -e 's/\-std=c++11//g' > asymptote-${VERSION}TL/configure.ac +touch -r asymptote-$VERSION/config.h asymptote-${VERSION}TL/config.h +touch -r asymptote-$VERSION/configure.ac asymptote-${VERSION}TL/configure.ac +cd asymptote-${VERSION}TL +rm settings.o +rm -f doc/*.aux doc/*.log doc/*.dvi +make MSDOS=1 DESTDIR="$BUILD/" +make MSDOS=1 install-asy DESTDIR="$BUILD/" +mv $BUILD/usr/local/bin/asy.exe $BUILD +cp $BUILD/asy.exe ~/CTAN/asymptote-$VERSION/binaries/i386-win32/texlive +cp -a configure.ac ~/CTAN/asymptote-$VERSION/ +cp -a $SHARED/asydoc/* ~/CTAN/asymptote-$VERSION/doc +cd ~/CTAN/asymptote-$VERSION/binaries/i386-win32 +ln -sf ../../README . +cd ~/CTAN +cp -a ~/asymptote/build-scripts/README-binaries asymptote-$VERSION/binaries/i386-win32/texlive/README +tar cfz asymptote-$VERSION-CTAN.tgz asymptote-$VERSION +cp -a --no-preserve=mode asymptote-$VERSION-CTAN.tgz $SHARED diff --git a/Build/source/utils/asymptote/build-scripts/build-freeglut b/Build/source/utils/asymptote/build-scripts/build-freeglut new file mode 100755 index 00000000000..95d4cbfb4bf --- /dev/null +++ b/Build/source/utils/asymptote/build-scripts/build-freeglut @@ -0,0 +1,22 @@ +#!/bin/sh -x +#Be sure to remove /usr/include/GL +wget http://prdownloads.sourceforge.net/freeglut/freeglut-2.8.1.tar.gz +ln -sf /usr/bin/cyggcc_s-1.dll /usr/lib/libgcc_s.a +tar -zxf freeglut-2.8.1.tar.gz +cd freeglut-2.8.1 +patch -p1 < ~/asymptote/patches/cygwin_freeglut-2.8.1.patch +./configure --prefix=/usr --without-x +make +cd src +gcc -s -static -shared -o freeglut.dll *.o -Wl,--out-implib=libfreeglut.a -lglu32 -lopengl32 -lgdi32 -lwinmm +cp freeglut.dll /lib +mkdir -p ~/dll +cp freeglut.dll ~/dll +gcc -s -shared -o freeglut.dll *.o -Wl,--out-implib=libfreeglut.a -lglu32 -lopengl32 -lgdi32 -lwinmm +cp libfreeglut.a /lib +cd .. +cp -a include/GL/*.h /usr/include/w32api/GL/ + +#OPTIONAL: To compile manually in src: +#gcc -O2 -c -D_WIN32 -DHAVE_CONFIG_H -DFREEGLUT_EXPORTS *.c -I.. -I../include + diff --git a/Build/source/utils/asymptote/camp.l b/Build/source/utils/asymptote/camp.l index 72681d30ae5..041939ffa5d 100644 --- a/Build/source/utils/asymptote/camp.l +++ b/Build/source/utils/asymptote/camp.l @@ -204,7 +204,7 @@ void getstring(void) LETTER [_A-Za-z] ESC \\ ENDL \\?(\r\n|\n|\r) -EXTRAOPS <<|>>|$|$$|@|@@|~ +EXTRAOPS <<|>>|$|$$|@|@@|~|<> %% diff --git a/Build/source/utils/asymptote/config.guess b/Build/source/utils/asymptote/config.guess index 256083a70d3..f32079abda6 100644 --- a/Build/source/utils/asymptote/config.guess +++ b/Build/source/utils/asymptote/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. -timestamp='2018-03-08' +timestamp='2008-01-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -15,22 +17,26 @@ timestamp='2018-03-08' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see <https://www.gnu.org/licenses/>. +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner <per@bothner.com>. +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. # -# You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. # -# Please send patches to <config-patches@gnu.org>. - +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` @@ -39,7 +45,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Options: +Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,7 +56,8 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -107,9 +114,9 @@ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > "$dummy.c" ; + ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do - if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; @@ -132,40 +139,12 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval "$set_cc_for_build" - cat <<-EOF > "$dummy.c" - #include <features.h> - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" - - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl - fi - ;; -esac - # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -175,33 +154,23 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ - echo unknown)` - case "$UNAME_MACHINE_ARCH" in + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; - earmv*) - arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown - ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in - earm*) - os=netbsdelf - ;; + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval "$set_cc_for_build" + eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ + | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -211,14 +180,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in fi ;; *) - os=netbsd - ;; - esac - # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in - earm*) - expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + os=netbsd ;; esac # The OS release @@ -226,62 +188,42 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) - release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; - *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; - *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; - *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; - *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; - mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -291,54 +233,60 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE=alpha ;; + UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") - UNAME_MACHINE=alpha ;; + UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") - UNAME_MACHINE=alpha ;; + UNAME_MACHINE="alpha" ;; "EV5 (21164)") - UNAME_MACHINE=alphaev5 ;; + UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") - UNAME_MACHINE=alphaev56 ;; + UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") - UNAME_MACHINE=alphapca56 ;; + UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") - UNAME_MACHINE=alphapca57 ;; + UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") - UNAME_MACHINE=alphaev6 ;; + UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") - UNAME_MACHINE=alphaev67 ;; + UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") - UNAME_MACHINE=alphaev68 ;; + UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") - UNAME_MACHINE=alphaev68 ;; + UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") - UNAME_MACHINE=alphaev68 ;; + UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE=alphaev69 ;; + UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") - UNAME_MACHINE=alphaev7 ;; + UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") - UNAME_MACHINE=alphaev79 ;; + UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos + echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos + echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -347,12 +295,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" + echo arm-acorn-riscix${UNAME_RELEASE} exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) + arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) @@ -376,39 +324,20 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; - s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval "$set_cc_for_build" - SUN_ARCH=i386 - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH=x86_64 - fi - fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in @@ -417,25 +346,25 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" + echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" + echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not @@ -446,44 +375,44 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" + echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" + echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" + echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" + echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" + echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" + echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" + echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval "$set_cc_for_build" - sed 's/^ //' << EOF > "$dummy.c" + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -492,23 +421,23 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o "$dummy" "$dummy.c" && - dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`"$dummy" "$dummyarg"` && + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" + echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax @@ -532,21 +461,21 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then - if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ - [ "$TARGET_BINARY_INTERFACE"x = x ] + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] then - echo m88k-dg-dgux"$UNAME_RELEASE" + echo m88k-dg-dgux${UNAME_RELEASE} else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else - echo i586-dg-dgux"$UNAME_RELEASE" + echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -561,7 +490,7 @@ EOF echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id @@ -573,14 +502,14 @@ EOF if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval "$set_cc_for_build" - sed 's/^ //' << EOF > "$dummy.c" + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #include <sys/systemcfg.h> main() @@ -591,7 +520,7 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else @@ -603,29 +532,28 @@ EOF echo rs6000-ibm-aix3.2 fi exit ;; - *:AIX:*:[4567]) + *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; - ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx @@ -640,67 +568,67 @@ EOF echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in - 9000/31?) HP_ARCH=m68000 ;; - 9000/[34]??) HP_ARCH=m68k ;; + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in - 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 - 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in - 32) HP_ARCH=hppa2.0n ;; - 64) HP_ARCH=hppa2.0w ;; - '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 - esac ;; - esac + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac fi - if [ "$HP_ARCH" = "" ]; then - eval "$set_cc_for_build" - sed 's/^ //' << EOF > "$dummy.c" + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c - #define _HPUX_SOURCE - #include <stdlib.h> - #include <unistd.h> + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF - (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ "$HP_ARCH" = hppa2.0w ] + if [ ${HP_ARCH} = "hppa2.0w" ] then - eval "$set_cc_for_build" + eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -711,23 +639,23 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null then - HP_ARCH=hppa2.0w + HP_ARCH="hppa2.0w" else - HP_ARCH=hppa64 + HP_ARCH="hppa64" fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) - eval "$set_cc_for_build" - sed 's/^ //' << EOF > "$dummy.c" + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #include <unistd.h> int main () @@ -752,11 +680,11 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) @@ -765,7 +693,7 @@ EOF *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) @@ -773,9 +701,9 @@ EOF exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + echo ${UNAME_MACHINE}-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -783,274 +711,325 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) - echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` - FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" + echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) - UNAME_PROCESSOR=x86_64 ;; - i386) - UNAME_PROCESSOR=i586 ;; + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; - *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 + echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 + echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 + echo ${UNAME_MACHINE}-pc-pw32 exit ;; - *:Interix*:*) - case "$UNAME_MACHINE" in + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in x86) - echo i586-pc-interix"$UNAME_RELEASE" + echo i586-pc-interix${UNAME_RELEASE} exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" + EM64T | authenticamd) + echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" + echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin + echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) - echo "$UNAME_MACHINE"-pc-minix - exit ;; - aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) - eval "$set_cc_for_build" + eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi - else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf - fi + echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; - e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval "$set_cc_for_build" - sed 's/^ //' << EOF > "$dummy.c" + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + CPU=mips #else CPU= #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" - test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; - mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; esac exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both @@ -1058,54 +1037,54 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx + echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop + echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos + echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable + echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp + echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; - i*86:*:4.*:*) - UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL" + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL elif /bin/uname -X 2>/dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1115,20 +1094,17 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configure will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1137,9 +1113,9 @@ EOF exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1159,39 +1135,29 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" + echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" + echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" + echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" + echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 @@ -1202,15 +1168,15 @@ EOF *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes <hewes@openmarket.com>. # How about differentiating between stratus architectures? -djm @@ -1222,25 +1188,25 @@ EOF exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos + echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" + echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv"$UNAME_RELEASE" + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv"$UNAME_RELEASE" + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1250,100 +1216,53 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" + echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" + echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" + echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" + echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" + echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; - SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" + echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" + echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval "$set_cc_for_build" - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = x86; then + if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; - NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; - NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; - NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux @@ -1352,18 +1271,18 @@ EOF echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = 386; then + if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi - echo "$UNAME_MACHINE"-unknown-plan9 + echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 @@ -1384,14 +1303,14 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" + echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; @@ -1400,48 +1319,179 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; - amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs + echo ${UNAME_MACHINE}-pc-rdos exit ;; esac -echo "$0: unable to guess system type" >&2 +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in - mips:Linux | mips64:Linux) - # If we got here on MIPS GNU/Linux, output extra information. - cat >&2 <<EOF +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); -NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize -the system type. Please install a C compiler and try again. +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} EOF - ;; -esac + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi cat >&2 <<EOF +$0: unable to guess system type -This script (version $timestamp), has failed to recognize the -operating system you are using. If your script is old, overwrite *all* -copies of config.guess and config.sub with the latest versions from: +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD and - https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD -If $0 has already been updated, send the following data and any -information you think might be pertinent to config-patches@gnu.org to -provide the necessary information to handle your system. +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. config.guess timestamp = $timestamp @@ -1460,16 +1510,16 @@ hostinfo = `(hostinfo) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = "$UNAME_MACHINE" -UNAME_RELEASE = "$UNAME_RELEASE" -UNAME_SYSTEM = "$UNAME_SYSTEM" -UNAME_VERSION = "$UNAME_VERSION" +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/Build/source/utils/asymptote/config.h.in b/Build/source/utils/asymptote/config.h.in index 4f96342f132..3262ae09315 100644 --- a/Build/source/utils/asymptote/config.h.in +++ b/Build/source/utils/asymptote/config.h.in @@ -18,6 +18,9 @@ /* Define to 1 if you have the `dup2' function. */ #undef HAVE_DUP2 +/* Define to 1 if you have the `feenableexcept' function. */ +#undef HAVE_FEENABLEEXCEPT + /* Define to 1 if you have the <fenv.h> header file. */ #undef HAVE_FENV_H diff --git a/Build/source/utils/asymptote/config.sub b/Build/source/utils/asymptote/config.sub index 9ccf09a7a33..59bb593f109 100644 --- a/Build/source/utils/asymptote/config.sub +++ b/Build/source/utils/asymptote/config.sub @@ -1,31 +1,36 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2018 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. -timestamp='2018-03-08' +timestamp='2012-04-18' -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see <https://www.gnu.org/licenses/>. +# along with this program; if not, see <http://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). +# the same distribution terms that you use for the rest of that program. -# Please send patches to <config-patches@gnu.org>. +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -33,7 +38,7 @@ timestamp='2018-03-08' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,11 +58,12 @@ timestamp='2018-03-08' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS Canonicalize a configuration name. -Options: +Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -67,7 +73,9 @@ Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.sub ($timestamp) -Copyright 1992-2018 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 +Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -94,7 +102,7 @@ while test $# -gt 0 ; do *local*) # First pass through any local machine types. - echo "$1" + echo $1 exit ;; * ) @@ -112,24 +120,24 @@ esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) - basic_machine=`echo "$1" | sed 's/-[^-]*$//'` - if [ "$basic_machine" != "$1" ] - then os=`echo "$1" | sed 's/.*-/-/'` + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac @@ -148,7 +156,7 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; @@ -178,44 +186,44 @@ case $os in ;; -sco6) os=-sco5v6 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) - basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 @@ -227,7 +235,10 @@ case $os in os=-lynxos ;; -ptx*) - basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos @@ -248,25 +259,21 @@ case $basic_machine in | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | ba \ - | be32 | be64 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | be32 | be64 \ | bfin \ - | c4x | c8051 | clipper \ + | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ + | epiphany \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ - | i370 | i860 | i960 | ia16 | ia64 \ + | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ - | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -280,30 +287,26 @@ case $basic_machine in | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ + | nios | nios2 \ | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pj | pjl \ + | open8 \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pru \ | pyramid \ - | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -311,8 +314,7 @@ case $basic_machine in | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | wasm32 \ + | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown @@ -326,14 +328,11 @@ case $basic_machine in c6x) basic_machine=tic6x-unknown ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown @@ -362,7 +361,7 @@ case $basic_machine in ;; # Object if more than one company name word. *-*-*) - echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. @@ -371,29 +370,26 @@ case $basic_machine in | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ - | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ + | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ + | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ - | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ - | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -407,34 +403,28 @@ case $basic_machine in | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ - | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pru-* \ | pyramid-* \ - | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -442,8 +432,6 @@ case $basic_machine in | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ - | visium-* \ - | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -457,7 +445,7 @@ case $basic_machine in # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) - basic_machine=i386-pc + basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) @@ -491,7 +479,7 @@ case $basic_machine in basic_machine=x86_64-pc ;; amd64-*) - basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl @@ -520,9 +508,6 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; - asmjs) - basic_machine=asmjs-unknown - ;; aux) basic_machine=m68k-apple os=-aux @@ -536,7 +521,7 @@ case $basic_machine in os=-linux ;; blackfin-*) - basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) @@ -544,13 +529,13 @@ case $basic_machine in os=-cnk ;; c54x-*) - basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) - basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) - basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray @@ -639,18 +624,10 @@ case $basic_machine in basic_machine=rs6000-bull os=-bosx ;; - dpx2*) + dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; - e500v[12]) - basic_machine=powerpc-unknown - os=$os"spe" - ;; - e500v[12]-*) - basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` - os=$os"spe" - ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -740,6 +717,9 @@ case $basic_machine in hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; + hppa-next) + os=-nextstep3 + ;; hppaosf) basic_machine=hppa1.1-hp os=-osf @@ -752,26 +732,26 @@ case $basic_machine in basic_machine=i370-ibm ;; i*86v32) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) - basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; - vsta) + i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; @@ -789,17 +769,17 @@ case $basic_machine in basic_machine=m68k-isi os=-sysv ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` - ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) - basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; + m88k-omron*) + basic_machine=m88k-omron + ;; magnum | m3230) basic_machine=mips-mips os=-sysv @@ -808,15 +788,11 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; - microblaze*) + microblaze) basic_machine=microblaze-xilinx ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; mingw32) - basic_machine=i686-pc + basic_machine=i386-pc os=-mingw32 ;; mingw32ce) @@ -831,10 +807,10 @@ case $basic_machine in os=-mint ;; mips3*-*) - basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) - basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k @@ -844,19 +820,15 @@ case $basic_machine in basic_machine=powerpc-unknown os=-morphos ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) - basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) - basic_machine=i686-pc + basic_machine=i386-pc os=-msys ;; mvs) @@ -895,7 +867,7 @@ case $basic_machine in basic_machine=v70-nec os=-sysv ;; - next | m*-next) + next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) @@ -940,12 +912,6 @@ case $basic_machine in nsr-tandem) basic_machine=nsr-tandem ;; - nsv-tandem) - basic_machine=nsv-tandem - ;; - nsx-tandem) - basic_machine=nsx-tandem - ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf @@ -978,7 +944,7 @@ case $basic_machine in os=-linux ;; parisc-*) - basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) @@ -994,7 +960,7 @@ case $basic_machine in basic_machine=i386-pc ;; pc98-*) - basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc @@ -1009,16 +975,16 @@ case $basic_machine in basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) - basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould @@ -1028,23 +994,23 @@ case $basic_machine in ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) - basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppcle | powerpclittle) + ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; - ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppc64le | powerpc64little) + ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm @@ -1053,11 +1019,7 @@ case $basic_machine in basic_machine=i586-unknown os=-pw32 ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) + rdos) basic_machine=i386-pc os=-rdos ;; @@ -1098,10 +1060,17 @@ case $basic_machine in sequent) basic_machine=i386-sequent ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; sh5el) basic_machine=sh5le-unknown ;; - simso-wrs) + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; @@ -1120,7 +1089,7 @@ case $basic_machine in os=-sysv4 ;; strongarm-* | thumb-*) - basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun @@ -1242,9 +1211,6 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; - x64) - basic_machine=x86_64-pc - ;; xbox) basic_machine=i686-pc os=-mingw32 @@ -1253,12 +1219,20 @@ case $basic_machine in basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) - basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1287,6 +1261,10 @@ case $basic_machine in vax) basic_machine=vax-dec ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; pdp11) basic_machine=pdp11-dec ;; @@ -1296,6 +1274,9 @@ case $basic_machine in sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; cydra) basic_machine=cydra-cydrome ;; @@ -1315,7 +1296,7 @@ case $basic_machine in # Make sure to match an already-canonicalized machine name. ;; *) - echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac @@ -1323,10 +1304,10 @@ esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) - basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) - basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; @@ -1337,8 +1318,8 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases that might get confused - # with valid system types. + # First match some system type aliases + # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux @@ -1349,48 +1330,45 @@ case $os in -solaris) os=-solaris2 ;; + -svr4*) + os=-sysv4 + ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; - # es1800 is here to avoid being matched by es* (a different OS) - -es1800*) - os=-ose - ;; - # Now accept the basic system types. + # First accept the basic system types. # The portable systems comes first. - # Each alternative MUST end in a * to match a version number. + # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ + | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* | -cloudabi* | -sortix* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \ - | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -windiss* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ - | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ - | -midnightbsd*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1407,12 +1385,12 @@ case $os in -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; - -sim | -xray | -os68k* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* \ + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) - os=`echo "$os" | sed -e 's|mac|macos|'` + os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc @@ -1421,10 +1399,10 @@ case $os in os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) - os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) - os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition @@ -1435,6 +1413,12 @@ case $os in -wince*) os=-wince ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; -utek*) os=-bsd ;; @@ -1459,7 +1443,7 @@ case $os in -nova*) os=-rtmk-nova ;; - -ns2) + -ns2 ) os=-nextstep2 ;; -nsk*) @@ -1481,7 +1465,7 @@ case $os in -oss*) os=-sysv3 ;; - -svr4*) + -svr4) os=-sysv4 ;; -svr3) @@ -1496,38 +1480,35 @@ case $os in -ose*) os=-ose ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; - -pikeos*) - # Until real need of OS specific support for - # particular features comes up, bare metal - # configurations are quite functional. - case $basic_machine in - arm*) - os=-eabi - ;; - *) - os=-elf - ;; - esac - ;; -nacl*) ;; - -ios) - ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac @@ -1562,12 +1543,6 @@ case $basic_machine in c4x-* | tic4x-*) os=-coff ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; tic54x-*) os=-coff ;; @@ -1617,12 +1592,12 @@ case $basic_machine in sparc-* | *-sun) os=-sunos4.1.1 ;; - pru-*) - os=-elf - ;; *-be) os=-beos ;; + *-haiku) + os=-haiku + ;; *-ibm) os=-aix ;; @@ -1662,7 +1637,7 @@ case $basic_machine in m88k-omron*) os=-luna ;; - *-next) + *-next ) os=-nextstep ;; *-sequent) @@ -1677,6 +1652,9 @@ case $basic_machine in i370-*) os=-mvs ;; + *-next) + os=-nextstep3 + ;; *-gould) os=-sysv ;; @@ -1786,15 +1764,15 @@ case $basic_machine in vendor=stratus ;; esac - basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac -echo "$basic_machine$os" +echo $basic_machine$os exit # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/Build/source/utils/asymptote/configure b/Build/source/utils/asymptote/configure index 5187810ff20..4a211e865e4 100755 --- a/Build/source/utils/asymptote/configure +++ b/Build/source/utils/asymptote/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Asymptote 2.41. +# Generated by GNU Autoconf 2.69 for Asymptote 2.42. # # Report bugs to <http://sourceforge.net/projects/asymptote>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Asymptote' PACKAGE_TARNAME='asymptote' -PACKAGE_VERSION='2.41' -PACKAGE_STRING='Asymptote 2.41' +PACKAGE_VERSION='2.42' +PACKAGE_STRING='Asymptote 2.42' PACKAGE_BUGREPORT='http://sourceforge.net/projects/asymptote' PACKAGE_URL='' @@ -1283,7 +1283,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Asymptote 2.41 to adapt to many kinds of systems. +\`configure' configures Asymptote 2.42 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1348,7 +1348,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Asymptote 2.41:";; + short | recursive ) echo "Configuration of Asymptote 2.42:";; esac cat <<\_ACEOF @@ -1462,7 +1462,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Asymptote configure 2.41 +Asymptote configure 2.42 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2048,7 +2048,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Asymptote $as_me 2.41, which was +It was created by Asymptote $as_me 2.42, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4122,7 +4122,7 @@ fi test -n "$TEXI2DVI" && break done -test -n "$TEXI2DVI" || TEXI2DVI="echo texi2dvi is missing! Please put http://asymptote.sourceforge.net/asymptote.pdf in the doc directory, touch doc/asymptote.pdf, and run configure again; exit 1;" +test -n "$TEXI2DVI" || TEXI2DVI="@echo \*\*\*\*\*\*\*\*\*\* Please install texi2dvi or put http://asymptote.sourceforge.net/asymptote.pdf in the doc directory: cannot execute texi2dvi" @@ -5766,8 +5766,8 @@ fi -GCVERSION=7.6.0 -ATOMICVERSION=7.4.4 +GCVERSION=7.6.2 +ATOMICVERSION=7.6.2 GCFILE=gc-$GCVERSION ac_cv_use_gc="system" @@ -5806,7 +5806,7 @@ OPTIONS="-D_FILE_OFFSET_BITS=64 " GCLIB= GCPPLIB= GCNAME="Boehm Garbage Collector" -GCOPTIONS="--disable-shared --enable-large-config" +GCOPTIONS="--disable-shared" if test "x$ac_cv_use_gc" != "xno" ; then OPTIONS=$OPTIONS"-DUSEGC " case _$ac_cv_use_gc in @@ -6864,6 +6864,18 @@ fi done +for ac_func in feenableexcept +do : + ac_fn_cxx_check_func "$LINENO" "feenableexcept" "ac_cv_func_feenableexcept" +if test "x$ac_cv_func_feenableexcept" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FEENABLEEXCEPT 1 +_ACEOF + +fi +done + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8526,7 +8538,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Asymptote $as_me 2.41, which was +This file was extended by Asymptote $as_me 2.42, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8588,7 +8600,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Asymptote config.status 2.41 +Asymptote config.status 2.42 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/utils/asymptote/configure.ac b/Build/source/utils/asymptote/configure.ac index 86842a22d92..924f35422ca 100644 --- a/Build/source/utils/asymptote/configure.ac +++ b/Build/source/utils/asymptote/configure.ac @@ -3,7 +3,7 @@ # this file. AC_PREREQ(2) -AC_INIT([Asymptote],[2.41],[http://sourceforge.net/projects/asymptote]) +AC_INIT([Asymptote],[2.42],[http://sourceforge.net/projects/asymptote]) VERSION=$PACKAGE_VERSION AC_SUBST(VERSION) m4_include([ax_pthread.m4]) @@ -54,7 +54,7 @@ fi ]) AC_CHECK_PROGS(TEXI2DVI,[texi2dvi], -[echo texi2dvi is missing! Please put http://asymptote.sourceforge.net/asymptote.pdf in the doc directory, touch doc/asymptote.pdf, and run configure again; exit 1;]) +[@echo \*\*\*\*\*\*\*\*\*\* Please install texi2dvi or put http://asymptote.sourceforge.net/asymptote.pdf in the doc directory: cannot execute texi2dvi]) AC_SUBST(TEXI2DVI) @@ -123,8 +123,8 @@ AC_CHECK_HEADER(unordered_map,AC_DEFINE(HAVE_UNORDERED_MAP,1, [Define to 1 if you have tr1/unordered_map]), [AC_CHECK_HEADER(ext/hash_map,,OPTIONS=$OPTIONS"-DNOHASH ")])]) -GCVERSION=7.6.0 -ATOMICVERSION=7.4.4 +GCVERSION=7.6.2 +ATOMICVERSION=7.6.2 GCFILE=gc-$GCVERSION ac_cv_use_gc="system" @@ -145,7 +145,7 @@ OPTIONS="-D_FILE_OFFSET_BITS=64 " GCLIB= GCPPLIB= GCNAME="Boehm Garbage Collector" -GCOPTIONS="--disable-shared --enable-large-config" +GCOPTIONS="--disable-shared" if test "x$ac_cv_use_gc" != "xno" ; then OPTIONS=$OPTIONS"-DUSEGC " case _$ac_cv_use_gc in @@ -267,6 +267,8 @@ fi AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([fenv.h stddef.h libintl.h]) AC_CHECK_HEADERS(fpu_control.h) +AC_CHECK_FUNCS([feenableexcept]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include "xstream.h"])], [AC_SEARCH_LIBS([xdrstdio_create],[nsl rpc]) diff --git a/Build/source/utils/asymptote/doc/CAD.pdf b/Build/source/utils/asymptote/doc/CAD.pdf Binary files differindex 30932b86142..eaeb2b6bcd9 100644 --- a/Build/source/utils/asymptote/doc/CAD.pdf +++ b/Build/source/utils/asymptote/doc/CAD.pdf diff --git a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info index 67729d0b5f3..155fb75c2eb 100644 --- a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info +++ b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info @@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir) ASYMPTOTE FREQUENTLY ASKED QUESTIONS - 22 Mar 2017 + 03 Apr 2018 This is the list of Frequently Asked Questions about Asymptote (asy). diff --git a/Build/source/utils/asymptote/doc/FAQ/bfnnconv.pl b/Build/source/utils/asymptote/doc/FAQ/bfnnconv.pl index e1c894d299c..0a705e2c68f 100755 --- a/Build/source/utils/asymptote/doc/FAQ/bfnnconv.pl +++ b/Build/source/utils/asymptote/doc/FAQ/bfnnconv.pl @@ -61,7 +61,7 @@ for $thisxr (@xrefdb) { open(U,">$prefix.xrefdb-new"); -for $x (@outputs) { require("m-$x.pl"); } +for $x (@outputs) { require("./m-$x.pl"); } &call('init'); diff --git a/Build/source/utils/asymptote/doc/FAQ/install-sh b/Build/source/utils/asymptote/doc/FAQ/install-sh index 8175c640fe6..6781b987bdb 100755 --- a/Build/source/utils/asymptote/doc/FAQ/install-sh +++ b/Build/source/utils/asymptote/doc/FAQ/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,21 +35,25 @@ scriptversion=2018-03-11.20; # UTC # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it +# `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. -tab=' ' nl=' ' -IFS=" $tab$nl" +IFS=" "" $nl" -# Set DOITPROG to "echo" to test this script. +# set DOITPROG to echo to test this script +# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -doit_exec=${doit:-exec} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -64,6 +68,17 @@ mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + posix_mkdir= # Desired mode of installed file. @@ -82,7 +97,7 @@ dir_arg= dst_arg= copy_on_change=false -is_target_a_directory=possibly +no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -122,57 +137,42 @@ while test $# -ne 0; do -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) dst_arg=$2 + shift;; - -T) is_target_a_directory=never;; + -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -186,10 +186,6 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac done fi @@ -198,26 +194,13 @@ if test $# -eq 0; then echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call 'install-sh -d' without argument. + # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 + trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,16 +211,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -245,9 +228,9 @@ fi for src do - # Protect names problematic for 'test' and other utilities. + # Protect names starting with `-'. case $src in - -* | [=\(\)!]) src=./$src;; + -*) src=./$src;; esac if test -n "$dir_arg"; then @@ -269,115 +252,129 @@ do echo "$0: no destination specified." >&2 exit 1 fi + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac - # If destination is a directory, append the input filename. + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst - dstbase=`basename "$src"` - case $dst in - */) dst=$dst$dstbase;; - *) dst=$dst/$dstbase;; - esac + dst=$dstdir/`basename "$src"` dstdir_status=0 else - dstdir=`dirname "$dst"` + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + test -d "$dstdir" dstdir_status=$? fi fi - case $dstdir in - */) dstdirslash=$dstdir;; - *) dstdirslash=$dstdir/;; - esac - obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -387,51 +384,53 @@ do # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; esac + eval "$initialize_posix_glob" + oIFS=$IFS IFS=/ - set -f + $posix_glob set -f set fnord $dstdir shift - set +f + $posix_glob set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -444,8 +443,8 @@ do else # Make a couple of temp file names in the proper directory. - dsttmp=${dstdirslash}_inst.$$_ - rmtmp=${dstdirslash}_rm.$$_ + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 @@ -466,12 +465,15 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - set +f && + $posix_glob set +f && + test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -484,24 +486,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 @@ -510,9 +512,9 @@ do done # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" +# time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: diff --git a/Build/source/utils/asymptote/doc/Makefile.in b/Build/source/utils/asymptote/doc/Makefile.in index 2e502cca4cd..58dfc179df5 100644 --- a/Build/source/utils/asymptote/doc/Makefile.in +++ b/Build/source/utils/asymptote/doc/Makefile.in @@ -65,11 +65,11 @@ asy.1: options asy.1.begin asy.1.end asymptote.dvi: $(SOURCE) $(ASYFILES:.asy=.eps) latexusage.pdf ln -sf asymptote.texi asymptote_.texi - $(TEXI2DVI) asymptote_.texi + -$(TEXI2DVI) asymptote_.texi mv asymptote_.dvi asymptote.dvi asymptote.pdf: $(SOURCE) $(ASYFILES:.asy=.pdf) latexusage.pdf - $(TEXI2DVI) --pdf asymptote.texi + -$(TEXI2DVI) --pdf asymptote.texi CAD.pdf: CAD.tex CAD1.eps latex CAD diff --git a/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf b/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf Binary files differindex 1f5a1b68f65..73c874c90a7 100644 --- a/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf +++ b/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf diff --git a/Build/source/utils/asymptote/doc/asy-latex.pdf b/Build/source/utils/asymptote/doc/asy-latex.pdf Binary files differindex a4175f6eefb..458739be2aa 100644 --- a/Build/source/utils/asymptote/doc/asy-latex.pdf +++ b/Build/source/utils/asymptote/doc/asy-latex.pdf diff --git a/Build/source/utils/asymptote/doc/asyRefCard.pdf b/Build/source/utils/asymptote/doc/asyRefCard.pdf Binary files differindex 208c4eedc18..0d9489a98a9 100644 --- a/Build/source/utils/asymptote/doc/asyRefCard.pdf +++ b/Build/source/utils/asymptote/doc/asyRefCard.pdf diff --git a/Build/source/utils/asymptote/doc/asymptote.pdf b/Build/source/utils/asymptote/doc/asymptote.pdf Binary files differindex 49d678f6514..df69e68a5d1 100644 --- a/Build/source/utils/asymptote/doc/asymptote.pdf +++ b/Build/source/utils/asymptote/doc/asymptote.pdf diff --git a/Build/source/utils/asymptote/doc/asymptote.texi b/Build/source/utils/asymptote/doc/asymptote.texi index 0c7d92a297a..278a57541c6 100644 --- a/Build/source/utils/asymptote/doc/asymptote.texi +++ b/Build/source/utils/asymptote/doc/asymptote.texi @@ -4,6 +4,8 @@ @include version.texi @finalout +@codequoteundirected on + @copying This file documents @code{Asymptote}, version @value{VERSION}. @@ -366,31 +368,17 @@ Users of the @code{Microsoft Windows} operating system can install the self-extracting @code{Asymptote} executable @code{asymptote-x.xx-setup.exe}, where @code{x.xx} denotes the latest version. -A working @TeX{} implementation (such as the one available at +A working @TeX{} implementation (we recommend +@url{https://www.tug.org/texlive} or @url{http://www.miktex.org}) will be required to typeset labels. You will also need to install @code{GPL Ghostscript} version 9.14 or later from @url{http://downloads.ghostscript.com/public}. -To view the default @code{PostScript} output, you can install the +To view @code{PostScript} output, you can install the program @code{gsview} available from @url{http://www.cs.wisc.edu/~ghost/gsview/}. -@cindex @code{psview} -@anchor{psview} -A better (and free) @code{PostScript} viewer available at -@url{http://psview.sourceforge.net/} (which in particular works properly -in interactive mode) unfortunately currently requires some manual -configuration. Specifically, if version @code{x.xx} of @code{psview} is -extracted to the directory @code{c:\Program Files} one needs to put -@verbatim -import settings; -psviewer="c:\Program Files\psview-x.xx\psv.exe"; -@end verbatim -@noindent -in the optional @code{Asymptote} configuration file; -@pxref{configuration file}). The @code{ImageMagick} package from - @url{http://www.imagemagick.org/script/binary-releases.php} @noindent @@ -428,8 +416,7 @@ Users of @code{ggv} will need to enable @code{Watch file} under Users of @code{gsview} will need to enable @code{Options/Auto Redisplay} (however, under @code{MSDOS} it is still necessary to click on the @code{gsview} window; under @code{UNIX} one must manually redisplay by -pressing the @code{r} key). A better (and free) multiplatform -alternative to @code{gsview} is @code{psview} (@pxref{psview}). +pressing the @code{r} key). @cindex @code{settings} @cindex configuration file @@ -2166,6 +2153,13 @@ returns an array of strings obtained by splitting @code{s} into substrings delimited by @code{delimiter} (an empty delimiter signifies a space, but with duplicate delimiters discarded); +@cindex @code{array} +@cindex @code{operator +(...string[] a)}. +@item string[] array(string s) +returns an array of strings obtained by splitting @code{s} into +individual characters. The inverse operation is provided by +@code{operator +(...string[] a)}. + @anchor{format} @item string format(string s, int n, string locale="") @cindex @code{format} @@ -2174,14 +2168,15 @@ string @code{s} using locale @code{locale} (or the current locale if an empty string is specified), following the behaviour of the C function @code{fprintf}), except that only one data field is allowed. -@item string format(string s=defaultformat, string s=defaultseparator, real x, string locale="") +@item string format(string s=defaultformat, bool forcemath=false, string s=defaultseparator, real x, string locale="") returns a string containing @code{x} formatted according to the C-style format string @code{s} using locale @code{locale} (or the current locale if an empty string is specified), following the behaviour of the C function @code{fprintf}), except that only one data field is allowed, trailing zeros are removed by default (unless @code{#} is specified), and -(if the format string specifies math mode) @TeX{} is used to typeset -scientific notation using the @code{defaultseparator="\!\times\!";}; +if @code{s} specifies math mode or @code{forcemath=true}, @TeX{} is +used to typeset scientific notation using the +@code{defaultseparator="\!\times\!";}; @cindex @code{hex} @cindex @code{hexidecimal} @@ -4465,8 +4460,11 @@ for nonintegral built-in arithmetic types @code{T}. If @code{a} and @cindex @code{CTZ} @code{Asymptote} also defines bitwise functions @code{int AND(int,int)}, @code{int OR(int,int)}, @code{int XOR(int,int)}, @code{int NOT(int)}, -@code{int CLZ(int)} (count leading zeros), and @code{int CTZ(int)} -(count trailing zeros). +@code{int CLZ(int)} (count leading zeros), +@code{int CTZ(int)} (count trailing zeros), +@code{int popcount(int)} (count bits populated by ones), and +@code{int bitreverse(int a, int bits)} (reverse bits within a word of +length bits). @node Self & prefix operators, User-defined operators, Arithmetic & logical, Operators @subsection Self & prefix operators @@ -4515,7 +4513,7 @@ The following symbols may be used with @code{operator} to define or redefine operators on structures and built-in types: @verbatim - + * / % ^ ! < > == != <= >= & | ^^ .. :: -- --- ++ -<< >> $ $$ @ @@ +<< >> $ $$ @ @@ <> @end verbatim @noindent The operators on the second line have precedence one higher than the @@ -5293,10 +5291,14 @@ if @code{n >= 1} returns a uniform partition of @code{[a,b]} into @code{n} subintervals (otherwise returns a null array); @cindex @code{find} -@item int find(bool[], int n=1) -returns the index of the @code{n}th @code{true} value or -1 if not found. -If @code{n} is negative, search backwards from the end of the array for the -@code{-n}th value; +@item int find(bool[] a, int n=1) +returns the index of the @code{n}th @code{true} value in the boolean array +@code{a} or -1 if not found. If @code{n} is negative, search backwards +from the end of the array for the @code{-n}th value; + +@cindex @code{findall} +@item int[] findall(bool[] a) +returns the indices of all @code{true} values in the boolean array @code{a}. @cindex @code{search} @item int search(T[] a, T key) diff --git a/Build/source/utils/asymptote/doc/install-sh b/Build/source/utils/asymptote/doc/install-sh index 8175c640fe6..6781b987bdb 100755 --- a/Build/source/utils/asymptote/doc/install-sh +++ b/Build/source/utils/asymptote/doc/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,21 +35,25 @@ scriptversion=2018-03-11.20; # UTC # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it +# `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. -tab=' ' nl=' ' -IFS=" $tab$nl" +IFS=" "" $nl" -# Set DOITPROG to "echo" to test this script. +# set DOITPROG to echo to test this script +# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -doit_exec=${doit:-exec} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -64,6 +68,17 @@ mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + posix_mkdir= # Desired mode of installed file. @@ -82,7 +97,7 @@ dir_arg= dst_arg= copy_on_change=false -is_target_a_directory=possibly +no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -122,57 +137,42 @@ while test $# -ne 0; do -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) dst_arg=$2 + shift;; - -T) is_target_a_directory=never;; + -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -186,10 +186,6 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac done fi @@ -198,26 +194,13 @@ if test $# -eq 0; then echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call 'install-sh -d' without argument. + # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 + trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,16 +211,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -245,9 +228,9 @@ fi for src do - # Protect names problematic for 'test' and other utilities. + # Protect names starting with `-'. case $src in - -* | [=\(\)!]) src=./$src;; + -*) src=./$src;; esac if test -n "$dir_arg"; then @@ -269,115 +252,129 @@ do echo "$0: no destination specified." >&2 exit 1 fi + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac - # If destination is a directory, append the input filename. + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst - dstbase=`basename "$src"` - case $dst in - */) dst=$dst$dstbase;; - *) dst=$dst/$dstbase;; - esac + dst=$dstdir/`basename "$src"` dstdir_status=0 else - dstdir=`dirname "$dst"` + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + test -d "$dstdir" dstdir_status=$? fi fi - case $dstdir in - */) dstdirslash=$dstdir;; - *) dstdirslash=$dstdir/;; - esac - obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -387,51 +384,53 @@ do # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; esac + eval "$initialize_posix_glob" + oIFS=$IFS IFS=/ - set -f + $posix_glob set -f set fnord $dstdir shift - set +f + $posix_glob set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -444,8 +443,8 @@ do else # Make a couple of temp file names in the proper directory. - dsttmp=${dstdirslash}_inst.$$_ - rmtmp=${dstdirslash}_rm.$$_ + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 @@ -466,12 +465,15 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - set +f && + $posix_glob set +f && + test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -484,24 +486,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 @@ -510,9 +512,9 @@ do done # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" +# time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: diff --git a/Build/source/utils/asymptote/doc/png/asymptote.info b/Build/source/utils/asymptote/doc/png/asymptote.info index 186c4c7f000..bae9887b4db 100644 --- a/Build/source/utils/asymptote/doc/png/asymptote.info +++ b/Build/source/utils/asymptote/doc/png/asymptote.info @@ -1,7 +1,7 @@ -This is asymptote.info, produced by makeinfo version 6.0 from +This is asymptote.info, produced by makeinfo version 6.4 from asymptote.texi. -This file documents 'Asymptote', version 2.41. +This file documents 'Asymptote', version 2.42. <http://asymptote.sourceforge.net> @@ -22,7 +22,7 @@ File: asymptote.info, Node: Top, Next: Description, Prev: (dir), Up: (dir) Asymptote ********* -This file documents 'Asymptote', version 2.41. +This file documents 'Asymptote', version 2.42. <http://asymptote.sourceforge.net> @@ -326,26 +326,17 @@ Users of the 'Microsoft Windows' operating system can install the self-extracting 'Asymptote' executable 'asymptote-x.xx-setup.exe', where 'x.xx' denotes the latest version. - A working TeX implementation (such as the one available at -<http://www.miktex.org>) will be required to typeset labels. You will -also need to install 'GPL Ghostscript' version 9.14 or later from + A working TeX implementation (we recommend +<https://www.tug.org/texlive> or <http://www.miktex.org>) will be +required to typeset labels. You will also need to install 'GPL +Ghostscript' version 9.14 or later from <http://downloads.ghostscript.com/public>. - To view the default 'PostScript' output, you can install the program -'gsview' available from <http://www.cs.wisc.edu/~ghost/gsview/>. A -better (and free) 'PostScript' viewer available at -<http://psview.sourceforge.net/> (which in particular works properly in -interactive mode) unfortunately currently requires some manual -configuration. Specifically, if version 'x.xx' of 'psview' is extracted -to the directory 'c:\Program Files' one needs to put -import settings; -psviewer="c:\Program Files\psview-x.xx\psv.exe"; -in the optional 'Asymptote' configuration file; *note configuration -file::). + To view 'PostScript' output, you can install the program 'gsview' +available from <http://www.cs.wisc.edu/~ghost/gsview/>. The 'ImageMagick' package from - - <http://www.imagemagick.org/script/binary-releases.php> +<http://www.imagemagick.org/script/binary-releases.php> is required to support output formats other than EPS, PDF, SVG, and PNG (*note convert::). The 'Python 2' interpreter from @@ -375,8 +366,7 @@ mode to work properly. Users of 'ggv' will need to enable 'Watch file' under 'Edit/Postscript Viewer Preferences'. Users of 'gsview' will need to enable 'Options/Auto Redisplay' (however, under 'MSDOS' it is still necessary to click on the 'gsview' window; under 'UNIX' one must -manually redisplay by pressing the 'r' key). A better (and free) -multiplatform alternative to 'gsview' is 'psview' (*note psview::). +manually redisplay by pressing the 'r' key). Configuration variables are most easily set as 'Asymptote' variables in an optional configuration file 'config.asy' *note configuration @@ -954,7 +944,7 @@ frame legend(picture pic=currentpicture, int perline=1, real xmargin=legendmargin, real ymargin=xmargin, real linelength=legendlinelength, real hskip=legendhskip, real vskip=legendvskip, - real maxwidth=0, real maxheight=0, + real maxwidth=0, real maxheight=0, bool hstretch=false, bool vstretch=false, pen p=currentpen); Here 'xmargin' and 'ymargin' specify the surrounding x and y margins, 'perline' specifies the number of entries per line (default 1; 0 means @@ -1234,7 +1224,7 @@ packed together into single frame with the routine frame pack(pair align=2S ... object inset[]); To draw or fill a box (or ellipse or other path) around a Label and return the bounding object, use one of the routines -object draw(picture pic=currentpicture, Label L, envelope e, +object draw(picture pic=currentpicture, Label L, envelope e, real xmargin=0, real ymargin=xmargin, pen p=currentpen, filltype filltype=NoFill, bool above=true); object draw(picture pic=currentpicture, Label L, envelope e, pair position, @@ -1698,6 +1688,11 @@ user-defined types): substrings delimited by 'delimiter' (an empty delimiter signifies a space, but with duplicate delimiters discarded); + 'string[] array(string s)' + returns an array of strings obtained by splitting 's' into + individual characters. The inverse operation is provided by + 'operator +(...string[] a)'. + 'string format(string s, int n, string locale="")' returns a string containing 'n' formatted according to the C-style format string 's' using locale 'locale' (or the @@ -1705,15 +1700,15 @@ user-defined types): behaviour of the C function 'fprintf'), except that only one data field is allowed. - 'string format(string s=defaultformat, string s=defaultseparator, real x, string locale="")' + 'string format(string s=defaultformat, bool forcemath=false, string s=defaultseparator, real x, string locale="")' returns a string containing 'x' formatted according to the C-style format string 's' using locale 'locale' (or the current locale if an empty string is specified), following the behaviour of the C function 'fprintf'), except that only one data field is allowed, trailing zeros are removed by default - (unless '#' is specified), and (if the format string specifies - math mode) TeX is used to typeset scientific notation using - the 'defaultseparator="\!\times\!";'; + (unless '#' is specified), and if 's' specifies math mode or + 'forcemath=true', TeX is used to typeset scientific notation + using the 'defaultseparator="\!\times\!";'; 'int hex(string s);' casts a hexidecimal string 's' to an integer; @@ -1855,18 +1850,18 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, discussed in *note Tutorial:: and *note Bezier curves::: size(300,0); pair[] z=new pair[10]; - + z[0]=(0,100); z[1]=(50,0); z[2]=(180,0); - + for(int n=3; n <= 9; ++n) z[n]=z[n-3]+(200,0); - + path p=z[0]..z[1]---z[2]::{up}z[3] &z[3]..z[4]--z[5]::{up}z[6] &z[6]::z[7]---z[8]..{up}z[9]; - + draw(p,grey+linewidth(4mm)); - + dot(z); [join] @@ -2124,27 +2119,27 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types, iteration, before the entire set of nodes (shown in red) is known: size(200); - + real mexican(real x) {return (1-8x^2)*exp(-(4x^2));} - + int n=30; real a=1.5; real width=2a/n; - + guide hat; path solved; - + for(int i=0; i < n; ++i) { real t=-a+i*width; pair z=(t,mexican(t)); hat=hat..z; solved=solved..z; } - + draw(hat); dot(hat,red); draw(solved,dashed); - + [mexicanhat] @@ -2488,12 +2483,12 @@ with one or more color components equal to 1. 'patterns.asy': size(0,90); import patterns; - + add("tile",tile()); add("filledtilewithmargin",tile(6mm,4mm,red,Fill),(1mm,1mm),(1mm,1mm)); add("checker",checker()); add("brick",brick()); - + real s=2.5; filldraw(unitcircle,pattern("tile")); filldraw(shift(s,0)*unitcircle,pattern("filledtilewithmargin")); @@ -2507,11 +2502,11 @@ with one or more color components equal to 1. crosshatch(real H=5mm, pen p=currentpen)': size(0,100); import patterns; - + add("hatch",hatch()); add("hatchback",hatch(NW)); add("crosshatch",crosshatch(3mm)); - + real s=1.25; filldraw(unitsquare,pattern("hatch")); filldraw(shift(s,0)*unitsquare,pattern("hatchback")); @@ -2527,16 +2522,16 @@ with one or more color components equal to 1. all printers support 'PostScript' 3): size(0,100); import patterns; - + real d=4mm; picture tiling; path square=scale(d)*unitsquare; axialshade(tiling,square,white,(0,0),black,(d,d)); fill(tiling,shift(d,d)*square,blue); add("shadedtiling",tiling); - + filldraw(unitcircle,pattern("shadedtiling")); - + * One can specify a custom pen nib as an arbitrary polygonal path with 'pen makepen(path)'; this path represents the mark to be drawn @@ -2548,7 +2543,7 @@ with one or more color components equal to 1. pen convex=makepen(scale(10)*polygon(8))+grey; draw((1,0.4),convex); draw((0,0)---(1,1)..(2,0)--cycle,convex); - + pen nonconvex=scale(10)* makepen((0,0)--(0.25,-1)--(0.5,0.25)--(1,0)--(0.5,1.25)--cycle)+red; draw((0.5,-1.5),nonconvex); @@ -2892,22 +2887,22 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform real size=50; size(pic1,size); fill(pic1,(0,0)--(50,100)--(100,0)--cycle,red); - + picture pic2; size(pic2,size); fill(pic2,unitcircle,green); - + picture pic3; size(pic3,size); fill(pic3,unitsquare,blue); - + picture pic; add(pic,pic1.fit(),(0,0),N); add(pic,pic2.fit(),(0,0),10S); - + add(pic.fit(),(0,0),N); add(pic3.fit(),(0,0),10S); - + [subpictures] @@ -2961,7 +2956,7 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform The routine void usepackage(string s, string options=""); provides a convenient abbreviation for - texpreamble("\usepackage["+options+"]{"+s+"}"); + texpreamble("\usepackage["+options+"]{"+s+"}"); that can be used for importing 'LaTeX' packages. @@ -3374,7 +3369,7 @@ incremental fields 'change.user' and 'change.system' indicate the change in the corresponding total parent and child CPU times since the last call to 'cputime()'. The function void write(file file=stdout, string s="", cputime c, - string format=cputimeformat, suffix suffix=none); + string format=cputimeformat, suffix suffix=none); displays the incremental user cputime followed by "u", the incremental system cputime followed by "s", the total user cputime followed by "U", and the total system cputime followed by "S". @@ -3389,7 +3384,7 @@ struct parent { } void write(parent p) {write(p.x);} - + struct child { parent parent; real y=3; @@ -3400,7 +3395,7 @@ struct child { } parent operator cast(child child) {return child.parent;} - + parent p=parent(1); child c=child(2); @@ -3497,7 +3492,9 @@ they are first promoted to the same color space. 'Asymptote' also defines bitwise functions 'int AND(int,int)', 'int OR(int,int)', 'int XOR(int,int)', 'int NOT(int)', 'int CLZ(int)' (count -leading zeros), and 'int CTZ(int)' (count trailing zeros). +leading zeros), 'int CTZ(int)' (count trailing zeros), 'int +popcount(int)' (count bits populated by ones), and 'int bitreverse(int +a, int bits)' (reverse bits within a word of length bits). File: asymptote.info, Node: Self & prefix operators, Next: User-defined operators, Prev: Arithmetic & logical, Up: Operators @@ -3533,7 +3530,7 @@ File: asymptote.info, Node: User-defined operators, Prev: Self & prefix operat The following symbols may be used with 'operator' to define or redefine operators on structures and built-in types: - + * / % ^ ! < > == != <= >= & | ^^ .. :: -- --- ++ -<< >> $ $$ @ @@ +<< >> $ $$ @ @@ <> The operators on the second line have precedence one higher than the boolean operators '<', '>', '<=', and '>='. @@ -3619,13 +3616,13 @@ reference, simply enclose it in a structure (*note Structures::). 1. Variables with signatures (functions) and without signatures (nonfunction variables) are distinct: - int x, x(); + int x, x(); x=5; x=new int() {return 17;}; x=x(); // calls x() and puts the result, 17, in the scalar x 2. Traditional function definitions are allowed: - int sqr(int x) + int sqr(int x) { return x*x; } @@ -3637,7 +3634,7 @@ reference, simply enclose it in a structure (*note Structures::). a=(int) b; // Valid: resolves ambiguity. (int) (a=b); // Valid: resolves ambiguity. (int) a=b; // Invalid: cast expressions cannot be L-values. - + int c(); c=a; // Valid: only one possible assignment. @@ -3657,38 +3654,38 @@ reference, simply enclose it in a structure (*note Structures::). version of 'f', as illustrated in this example: void f() { write("hi"); - } - + } + void g() { f(); - } - - g(); // writes "hi" - - f=new void() {write("bye");}; - - g(); // writes "bye" - - void f() {write("overloaded");}; - + } + + g(); // writes "hi" + + f=new void() {write("bye");}; + + g(); // writes "bye" + + void f() {write("overloaded");}; + f(); // writes "overloaded" - g(); // writes "bye" + g(); // writes "bye" 6. Anonymous functions can be used to redefine a function variable that has been declared (and implicitly initialized to the null function) but not yet explicitly defined: void f(bool b); - + void g(bool b) { if(b) f(b); else write(b); } - + f=new void(bool b) { write(b); g(false); }; - + g(true); // Writes true, then writes false. 'Asymptote' is the only language we know of that treats functions as @@ -3791,7 +3788,7 @@ Rest arguments allow one to write functions that take a variable number of arguments: // This function sums its arguments. int sum(... int[] nums) { - int total=0; + int total=0; for(int i=0; i < nums.length; ++i) total += nums[i]; return total; @@ -4104,10 +4101,13 @@ of type 'T[]'. if 'n >= 1' returns a uniform partition of '[a,b]' into 'n' subintervals (otherwise returns a null array); -'int find(bool[], int n=1)' - returns the index of the 'n'th 'true' value or -1 if not found. If - 'n' is negative, search backwards from the end of the array for the - '-n'th value; +'int find(bool[] a, int n=1)' + returns the index of the 'n'th 'true' value in the boolean array + 'a' or -1 if not found. If 'n' is negative, search backwards from + the end of the array for the '-n'th value; + +'int[] findall(bool[] a)' + returns the indices of all 'true' values in the boolean array 'a'. 'int search(T[] a, T key)' For built-in ordered types 'T', searches a sorted array 'a' of 'n' @@ -4523,19 +4523,19 @@ from graph access *; Similarly, one can add the non-private fields and types of a structure to the local environment with the 'unravel' keyword: -struct matrix { - real a,b,c,d; -} - -real det(matrix m) { - unravel m; - return a*d-b*c; -} +struct matrix { + real a,b,c,d; +} + +real det(matrix m) { + unravel m; + return a*d-b*c; +} Alternatively, one can unravel selective fields: -real det(matrix m) { +real det(matrix m) { from m unravel a,b,c as C,d; - return a*d-b*C; -} + return a*d-b*C; +} The command import graph; @@ -4875,7 +4875,7 @@ draw(c2); //draw("$\A$",box,z1); // Requires [inline] package option. //draw(Label("$\B$","$B$"),box,z2); // Requires [inline] package option. -draw("$A$",box,z1); +draw("$A$",box,z1); draw("$\V{B}$",box,z2); pair z=(0,-2); @@ -5544,7 +5544,7 @@ following routines: An axis can be drawn on a picture with one of the following commands: * void xaxis(picture pic=currentpicture, Label L="", axis axis=YZero, - real xmin=-infinity, real xmax=infinity, pen p=currentpen, + real xmin=-infinity, real xmax=infinity, pen p=currentpen, ticks ticks=NoTicks, arrowbar arrow=None, bool above=false); Draw an x axis on picture 'pic' from x='xmin' to x='xmax' using pen @@ -5581,7 +5581,7 @@ following routines: module 'graph.asy'. One can easily override the default values for the standard axis types: import graph; - + YZero=new axis(bool extend=true) { return new void(picture pic, axisT axis) { real y=pic.scale.x.scale.logarithmic ? 1 : 0; @@ -5594,7 +5594,7 @@ following routines: }; }; YZero=YZero(); - + The default tick option is 'NoTicks'. The options 'LeftTicks', 'RightTicks', or 'Ticks' can be used to draw ticks on the left, @@ -5673,8 +5673,8 @@ following routines: 'LeftTicks', 'RightTicks', and 'Ticks' by passing explicit real arrays 'Ticks' and (optionally) 'ticks' containing the locations of the major and minor ticks, respectively: - ticks LeftTicks(Label format="", ticklabel ticklabel=null, - bool beginlabel=true, bool endlabel=true, + ticks LeftTicks(Label format="", ticklabel ticklabel=null, + bool beginlabel=true, bool endlabel=true, real[] Ticks, real[] ticks=new real[], real Size=0, real size=0, bool extend=false, pen pTick=nullpen, pen ptick=nullpen) @@ -5800,18 +5800,18 @@ following routines: axis starting at y=0: import graph; size(150,0); - + real f(real x) {return exp(x);} pair F(real x) {return (x,f(x));} - + xaxis("$x$"); yaxis("$y$",0); - + draw(graph(f,-4,2,operator ..),red); - + labely(1,E); label("$e^x$",F(1),SE); - + [exp] @@ -5825,58 +5825,58 @@ following routines: of the picture covered by a label: import graph; - + size(400,200,IgnoreAspect); - + real Sin(real t) {return sin(2pi*t);} real Cos(real t) {return cos(2pi*t);} - + draw(graph(Sin,0,1),red,"$\sin(2\pi x)$"); draw(graph(Cos,0,1),blue,"$\cos(2\pi x)$"); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight,RightTicks(trailingzero)); - + label("LABEL",point(0),UnFill(1mm)); - + add(legend(),point(E),20E,UnFill); [lineargraph0] To specify a fixed size for the graph proper, use 'attach': import graph; - + size(250,200,IgnoreAspect); - + real Sin(real t) {return sin(2pi*t);} real Cos(real t) {return cos(2pi*t);} - + draw(graph(Sin,0,1),red,"$\sin(2\pi x)$"); draw(graph(Cos,0,1),blue,"$\cos(2\pi x)$"); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight,RightTicks(trailingzero)); - + label("LABEL",point(0),UnFill(1mm)); - + attach(legend(),truepoint(E),20E,UnFill); A legend can have multiple entries per line: - import graph; - size(8cm,6cm,IgnoreAspect); - - typedef real realfcn(real); - realfcn F(real p) { - return new real(real x) {return sin(p*x);}; - }; - + import graph; + size(8cm,6cm,IgnoreAspect); + + typedef real realfcn(real); + realfcn F(real p) { + return new real(real x) {return sin(p*x);}; + }; + for(int i=1; i < 5; ++i) draw(graph(F(i*pi),0,1),Pen(i), - "$\sin("+(i == 1 ? "" : (string) i)+"\pi x)$"); - xaxis("$x$",BottomTop,LeftTicks); - yaxis("$y$",LeftRight,RightTicks(trailingzero)); - - attach(legend(2),(point(S).x,truepoint(S).y),10S,UnFill); + "$\sin("+(i == 1 ? "" : (string) i)+"\pi x)$"); + xaxis("$x$",BottomTop,LeftTicks); + yaxis("$y$",LeftRight,RightTicks(trailingzero)); + + attach(legend(2),(point(S).x,truepoint(S).y),10S,UnFill); [legend] @@ -5884,14 +5884,14 @@ following routines: same size) using custom tick locations and a smaller font size for the tick labels on the y axis. import graph; - + size(200,150,IgnoreAspect); - + real[] x={0,1,2,3}; real[] y=x^2; - + draw(graph(x,y),red); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight, RightTicks(Label(fontsize(8pt)),new real[]{0,4,9})); @@ -5900,18 +5900,18 @@ following routines: 4. This example shows how to graph columns of data read from a file. import graph; - + size(200,150,IgnoreAspect); - + file in=input("filegraph.dat").line(); real[][] a=in; a=transpose(a); - + real[] x=a[0]; real[] y=a[1]; - + draw(graph(x,y),red); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight,RightTicks); @@ -5920,7 +5920,7 @@ following routines: 5. The next example draws two graphs of an array of coordinate pairs, using frame alignment and data markers. In the left-hand graph, the markers, constructed with - marker marker(path g, markroutine markroutine=marknodes, + marker marker(path g, markroutine markroutine=marknodes, pen p=currentpen, filltype filltype=NoFill, bool above=true); using the path 'unitcircle' (*note filltype::), are drawn below @@ -5948,7 +5948,7 @@ following routines: marker(polygon(5)),marker(invert*polygon(3)), marker(cross(4)),marker(cross(6)) }; - + marker[] MarkFill={ marker(scale(circlescale)*unitcircle,Fill),marker(polygon(3),Fill), marker(polygon(4),Fill),marker(polygon(5),Fill), @@ -5960,7 +5960,7 @@ following routines: void errorbars(picture pic=currentpicture, pair[] z, pair[] dp, pair[] dm={}, bool[] cond={}, pen p=currentpen, real size=0); - + void errorbars(picture pic=currentpicture, real[] x, real[] y, real[] dpx, real[] dpy, real[] dmx={}, real[] dmy={}, bool[] cond={}, pen p=currentpen, real size=0); @@ -5970,55 +5970,55 @@ following routines: optional pair array 'dm'. If 'dm' is not specified, the positive and negative extents of the error are assumed to be equal. import graph; - + picture pic; real xsize=200, ysize=140; size(pic,xsize,ysize,IgnoreAspect); - + pair[] f={(5,5),(50,20),(90,90)}; pair[] df={(0,0),(5,7),(0,5)}; - + errorbars(pic,f,df,red); draw(pic,graph(pic,f),"legend", marker(scale(0.8mm)*unitcircle,red,FillDraw(blue),above=false)); - + scale(pic,true); - + xaxis(pic,"$x$",BottomTop,LeftTicks); yaxis(pic,"$y$",LeftRight,RightTicks); add(pic,legend(pic),point(pic,NW),20SE,UnFill); - + picture pic2; size(pic2,xsize,ysize,IgnoreAspect); - + frame mark; filldraw(mark,scale(0.8mm)*polygon(6),green,green); draw(mark,scale(0.8mm)*cross(6),blue); - + draw(pic2,graph(pic2,f),marker(mark,markuniform(5))); - + scale(pic2,true); - + xaxis(pic2,"$x$",BottomTop,LeftTicks); yaxis(pic2,"$y$",LeftRight,RightTicks); - + yequals(pic2,55.0,red+Dotted); xequals(pic2,70.0,red+Dotted); - + // Fit pic to W of origin: add(pic.fit(),(0,0),W); - + // Fit pic2 to E of (5mm,0): add(pic2.fit(),(5mm,0),E); - + [errorbars] 6. A custom mark routine can be also be specified: import graph; - + size(200,100,IgnoreAspect); - + markroutine marks() { return new void(picture pic=currentpicture, frame f, path g) { path p=scale(1mm)*unitcircle; @@ -6043,13 +6043,13 @@ following routines: } }; } - + pair[] f={(5,5),(40,20),(55,51),(90,30)}; - + draw(graph(f),marker(marks())); - + scale(true); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight,RightTicks); @@ -6057,19 +6057,19 @@ following routines: 7. This example shows how to label an axis with arbitrary strings. import graph; - + size(400,150,IgnoreAspect); - + real[] x=sequence(12); real[] y=sin(2pi*x/12); - + scale(false); - + string[] month={"Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov","Dec"}; - + draw(graph(x,y),red,MarkFill[0]); - + xaxis(BottomTop,LeftTicks(new string(real x) { return month[round(x % 12)];})); yaxis("$y$",LeftRight,RightTicks(4)); @@ -6090,38 +6090,38 @@ following routines: function 'crop(picture pic)' can be used to crop a graph to the current graph limits. import graph; - + size(0,200); - + real x(real t) {return cos(2pi*t);} real y(real t) {return sin(2pi*t);} - + draw(graph(x,y,0,1)); - + //limits((0,-1),(1,0),Crop); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight,RightTicks(trailingzero)); - - + + [parametricgraph] The next example illustrates how one can extract a common axis scaling factor. import graph; - + axiscoverage=0.9; size(200,IgnoreAspect); - + real[] x={-1e-11,1e-11}; real[] y={0,1e6}; - + real xscale=round(log10(max(x))); real yscale=round(log10(max(y)))-1; - + draw(graph(x*10^(-xscale),y*10^(-yscale)),red); - + xaxis("$x/10^{"+(string) xscale+"}$",BottomTop,LeftTicks); yaxis("$y/10^{"+(string) yscale+"}$",LeftRight,RightTicks(trailingzero)); @@ -6130,7 +6130,7 @@ following routines: Axis scaling can be requested and/or automatic selection of the axis limits can be inhibited with one of these 'scale' routines: void scale(picture pic=currentpicture, scaleT x, scaleT y); - + void scale(picture pic=currentpicture, bool xautoscale=true, bool yautoscale=xautoscale, bool zautoscale=yautoscale); @@ -6164,31 +6164,31 @@ following routines: For example, to draw a log/log graph of a function, use 'scale(Log,Log)': import graph; - + size(200,200,IgnoreAspect); - + real f(real t) {return 1/t;} - + scale(Log,Log); - + draw(graph(f,0.1,10)); - + //limits((1,0.1),(10,0.5),Crop); - + dot(Label("(3,5)",align=S),Scale((3,5))); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$y$",LeftRight,RightTicks); - + [loggraph] By extending the ticks, one can easily produce a logarithmic grid: import graph; size(200,200,IgnoreAspect); - + real f(real t) {return 1/t;} - + scale(Log,Log); draw(graph(f,0.1,10),red); pen thin=linewidth(0.5*linewidth()); @@ -6196,7 +6196,7 @@ following routines: ptick=thin)); yaxis("$y$",LeftRight,RightTicks(begin=false,end=false,extend=true, ptick=thin)); - + [loggrid] @@ -6204,7 +6204,7 @@ following routines: One can also specify custom tick locations and formats for logarithmic axes: import graph; - + size(300,175,IgnoreAspect); scale(Log,Log); draw(graph(identity,5,20)); @@ -6213,26 +6213,26 @@ following routines: xaxis("$M/M_\odot$",BottomTop,LeftTicks(DefaultFormat, new real[] {6,10,12,14,16,18})); yaxis("$\nu_{\rm upp}$ [Hz]",LeftRight,RightTicks(DefaultFormat)); - + [logticks] It is easy to draw logarithmic graphs with respect to other bases: import graph; size(200,IgnoreAspect); - + // Base-2 logarithmic scale on y-axis: - + real log2(real x) {static real log2=log(2); return log(x)/log2;} real pow2(real x) {return 2^x;} - + scaleT yscale=scaleT(log2,pow2,logarithmic=true); scale(Linear,yscale); - + real f(real x) {return 1+x^2;} - + draw(graph(f,-4,4)); - + yaxis("$y$",ymin=1,ymax=f(5),RightTicks(Label(Fill(white))),EndArrow); xaxis("$x$",xmin=-5,xmax=5,LeftTicks,EndArrow); @@ -6243,30 +6243,30 @@ following routines: of a logarithmic axis, the break endpoints are automatically rounded to the nearest integral power of the base. import graph; - + size(200,150,IgnoreAspect); - + // Break the x axis at 3; restart at 8: real a=3, b=8; - + // Break the y axis at 100; restart at 1000: real c=100, d=1000; - + scale(Broken(a,b),BrokenLog(c,d)); - + real[] x={1,2,4,6,10}; real[] y=x^4; - + draw(graph(x,y),red,MarkFill[0]); - + xaxis("$x$",BottomTop,LeftTicks(Break(a,b))); yaxis("$y$",LeftRight,RightTicks(Break(c,d))); - + label(rotate(90)*Break,(a,point(S).y)); label(rotate(90)*Break,(a,point(N).y)); label(Break,(point(W).x,ScaleY(c))); label(Break,(point(E).x,ScaleY(c))); - + [brokenaxis] @@ -6278,19 +6278,19 @@ following routines: axis against a primary logarithmic y axis: import graph; texpreamble("\def\Arg{\mathop {\rm Arg}\nolimits}"); - + size(10cm,5cm,IgnoreAspect); - + real ampl(real x) {return 2.5/sqrt(1+x^2);} real phas(real x) {return -atan(x)/pi;} - + scale(Log,Log); draw(graph(ampl,0.01,10)); ylimits(0.001,100); - + xaxis("$\omega\tau_0$",BottomTop,LeftTicks); yaxis("$|G(\omega\tau_0)|$",Left,RightTicks); - + picture q=secondaryY(new void(picture pic) { scale(pic,Log,Linear); draw(pic,graph(pic,phas,0.01,10),red); @@ -6302,124 +6302,124 @@ following routines: }); label(q,"(1,0)",Scale(q,(1,0)),red); add(q); - + [Bode] A secondary logarithmic y axis can be drawn like this: import graph; - + size(9cm,6cm,IgnoreAspect); string data="secondaryaxis.csv"; - + file in=input(data).line().csv(); - + string[] titlelabel=in; string[] columnlabel=in; - + real[][] a=in; a=transpose(a); real[] t=a[0], susceptible=a[1], infectious=a[2], dead=a[3], larvae=a[4]; real[] susceptibleM=a[5], exposed=a[6],infectiousM=a[7]; - + scale(true); - + draw(graph(t,susceptible,t >= 10 & t <= 15)); draw(graph(t,dead,t >= 10 & t <= 15),dashed); - + xaxis("Time ($\tau$)",BottomTop,LeftTicks); yaxis(Left,RightTicks); - + picture secondary=secondaryY(new void(picture pic) { scale(pic,Linear(true),Log(true)); draw(pic,graph(pic,t,infectious,t >= 10 & t <= 15),red); yaxis(pic,Right,red,LeftTicks(begin=false,end=false)); }); - + add(secondary); label(shift(5mm*N)*"Proportion of crows",point(NW),E); - + [secondaryaxis] 10. Here is a histogram example, which uses the 'stats' module. import graph; import stats; - + size(400,200,IgnoreAspect); - + int n=10000; real[] a=new real[n]; for(int i=0; i < n; ++i) a[i]=Gaussrand(); - + draw(graph(Gaussian,min(a),max(a)),blue); - + // Optionally calculate "optimal" number of bins a la Shimazaki and Shinomoto. int N=bins(a); - + histogram(a,min(a),max(a),N,normalize=true,low=0,lightred,black,bars=false); - + xaxis("$x$",BottomTop,LeftTicks); yaxis("$dP/dx$",LeftRight,RightTicks(trailingzero)); - + [histogram] 11. Here is an example of reading column data in from a file and a least-squares fit, using the 'stats' module. size(400,200,IgnoreAspect); - + import graph; import stats; - + file fin=input("leastsquares.dat").line(); - + real[][] a=fin; a=transpose(a); - + real[] t=a[0], rho=a[1]; - + // Read in parameters from the keyboard: //real first=getreal("first"); //real step=getreal("step"); //real last=getreal("last"); - + real first=100; real step=50; real last=700; - + // Remove negative or zero values of rho: t=rho > 0 ? t : null; rho=rho > 0 ? rho : null; - + scale(Log(true),Linear(true)); - + int n=step > 0 ? ceil((last-first)/step) : 0; - + real[] T,xi,dxi; - + for(int i=0; i <= n; ++i) { real first=first+i*step; real[] logrho=(t >= first & t <= last) ? log(rho) : null; real[] logt=(t >= first & t <= last) ? -log(t) : null; - + if(logt.length < 2) break; - + // Fit to the line logt=L.m*logrho+L.b: linefit L=leastsquares(logt,logrho); - + T.push(first); xi.push(L.m); dxi.push(L.dm); - } - + } + draw(graph(T,xi),blue); errorbars(T,xi,dxi,red); - + crop(); - + ylimits(0); - + xaxis("$T$",BottomTop,LeftTicks); yaxis("$\xi$",LeftRight,RightTicks); @@ -6428,11 +6428,11 @@ following routines: 12. Here is an example that illustrates the general 'axis' routine. import graph; size(0,100); - + path g=ellipse((0,0),1,2); - + scale(true); - + axis(Label("C",align=10W),g,LeftTicks(endlabel=false,8,end=false), ticklocate(0,360,new real(real v) { path h=(0,0)--max(abs(max(g)),abs(min(g)))*dir(v); @@ -6447,35 +6447,35 @@ following routines: as illustrated in this simple example of a flow field: import graph; defaultpen(1.0); - + size(0,150,IgnoreAspect); - + real arrowsize=4mm; real arrowlength=2arrowsize; - + typedef path vector(real); - + // Return a vector interpolated linearly between a and b. vector vector(pair a, pair b) { return new path(real x) { return (0,0)--arrowlength*interp(a,b,x); }; } - + real f(real x) {return 1/x;} - + real epsilon=0.5; path g=graph(f,epsilon,1/epsilon); - + int n=3; draw(g); xaxis("$x$"); yaxis("$y$"); - + add(vectorfield(vector(W,W),g,n,true)); add(vectorfield(vector(NE,NW),(0,0)--(point(E).x,0),n,true)); add(vectorfield(vector(NE,NE),(0,0)--(0,point(N).y),n,true)); - + [flow] @@ -6489,12 +6489,12 @@ following routines: as illustrated in this example: import graph; size(100); - + pair a=(0,0); pair b=(2pi,2pi); - + path vector(pair z) {return (0,0)--(sin(z.x),cos(z.y));} - + add(vectorfield(vector,a,b)); [vectorfield] @@ -6789,7 +6789,7 @@ model tree. Here material is a structure defined in 'three_light.asy': struct material { pen[] p; // diffusepen,ambientpen,emissivepen,specularpen real opacity; - real shininess; + real shininess; ... } These material properties are used to implement 'OpenGL'-style lighting, @@ -7370,7 +7370,7 @@ Analogous routines 'yaxis' and 'zaxis' can be used to draw y and z axes in three dimensions. There is also a routine for drawing all three axis: void axes3(picture pic=currentpicture, - Label xlabel="", Label ylabel="", Label zlabel="", + Label xlabel="", Label ylabel="", Label zlabel="", bool extend=false, triple min=(-infinity,-infinity,-infinity), triple max=(infinity,infinity,infinity), @@ -7851,7 +7851,7 @@ pen tickpen=gray+0.5*linewidth(currentpen); pen[] Palette=BWRainbow(); bounds range=image(f,Automatic,a,b,N,Palette); - + // Major contours real[] Cvals=uniform(range.min,range.max,Divs); @@ -7958,9 +7958,9 @@ not, then 'contour3' may be a better choice. To construct the null surface of a function 'f(triple)' or 'ff(real,real,real)' over 'box(a,b)', use the routine -surface implicitsurface(real f(triple)=null, +surface implicitsurface(real f(triple)=null, real ff(real,real,real)=null, - triple a, + triple a, triple b, int n=nmesh, bool keyword overlapedges=false, @@ -7986,7 +7986,7 @@ File: asymptote.info, Node: slopefield, Next: ode, Prev: smoothcontour3, Up: To draw a slope field for the differential equation dy/dx=f(x,y) (or dy/dx=f(x)), use: picture slopefield(real f(real,real), pair a, pair b, - int nx=nmesh, int ny=nx, + int nx=nmesh, int ny=nx, real tickfactor=0.5, pen p=currentpen, arrowbar arrow=None); Here, the points 'a' and 'b' are the lower left and upper right corners @@ -8039,7 +8039,7 @@ Type 'asy -h' to see the full list of command-line options supported by 'Asymptote': Usage: ../asy [options] [file ...] -Options (negate by replacing - with -no): +Options (negate by replacing - with -no): -V,-View View output; command-line only -a,-align C|B|T|Z Center, Bottom, Top, or Zero page alignment [C] @@ -8216,7 +8216,7 @@ value '(0,0)' species center alignment. 'Asymptote' code on the command line as a string. It is not necessary to terminate the string with a semicolon. Multiple '-c' options are executed in the order they are given. For example -asy -c 2+2 -c "sin(1)" -c "size(100); draw(unitsquare)" +asy -c 2+2 -c "sin(1)" -c "size(100); draw(unitsquare)" produces the output 4 0.841470984807897 @@ -8282,7 +8282,7 @@ using the symbol '%' in the next line input at the prompt. For example: > currentpicture <picture currentpicture> > %.size(200,0) -> +> The '%' symbol, when used as a variable, is shorthand for the identifier 'operator answer', which is set by the prompt after each @@ -8544,1551 +8544,1553 @@ Index * Menu: -* '!': Arithmetic & logical. +* !: Arithmetic & logical. (line 57) -* '!=': Structures. (line 62) -* '!=' <1>: Arithmetic & logical. +* !=: Structures. (line 62) +* != <1>: Arithmetic & logical. (line 37) -* '#': Arithmetic & logical. +* #: Arithmetic & logical. (line 20) -* '%': Arithmetic & logical. +* %: Arithmetic & logical. (line 25) -* '%' <1>: Interactive mode. (line 16) -* '%=': Self & prefix operators. +* % <1>: Interactive mode. (line 16) +* %=: Self & prefix operators. (line 6) -* '&': Bezier curves. (line 84) -* '&' <1>: Arithmetic & logical. +* &: Bezier curves. (line 84) +* & <1>: Arithmetic & logical. (line 49) -* '&&': Arithmetic & logical. +* &&: Arithmetic & logical. (line 47) -* '*': Pens. (line 15) -* '*' <1>: Arithmetic & logical. +* *: Pens. (line 15) +* * <1>: Arithmetic & logical. (line 16) -* '**': Arithmetic & logical. +* **: Arithmetic & logical. (line 31) -* '*=': Self & prefix operators. +* *=: Self & prefix operators. (line 6) -* '+': Pens. (line 15) -* '+' <1>: Arithmetic & logical. +* +: Pens. (line 15) +* + <1>: Arithmetic & logical. (line 13) -* '++': Self & prefix operators. +* ++: Self & prefix operators. (line 6) -* '+=': Self & prefix operators. +* +=: Self & prefix operators. (line 6) -* '-': Arithmetic & logical. +* -: Arithmetic & logical. (line 14) -* '--': Paths. (line 16) -* '--' <1>: Self & prefix operators. +* --: Paths. (line 16) +* -- <1>: Self & prefix operators. (line 6) -* '---': Bezier curves. (line 84) -* '-=': Self & prefix operators. +* ---: Bezier curves. (line 84) +* -=: Self & prefix operators. (line 6) -* '-c': Options. (line 183) -* '-l': Options. (line 202) -* '-u': Options. (line 193) -* '-V': Configuring. (line 6) -* '-V' <1>: Drawing in batch mode. +* -c: Options. (line 183) +* -l: Options. (line 202) +* -u: Options. (line 193) +* -V: Configuring. (line 6) +* -V <1>: Drawing in batch mode. (line 16) -* '..': Paths. (line 16) -* '.asy': Search paths. (line 12) -* '/': Arithmetic & logical. +* ..: Paths. (line 16) +* .asy: Search paths. (line 12) +* /: Arithmetic & logical. (line 18) -* '/=': Self & prefix operators. +* /=: Self & prefix operators. (line 6) * 2D graphs: graph. (line 6) * 3D graphs: graph3. (line 6) * 3D grids: grid3. (line 6) -* 3D 'PostScript': three. (line 580) -* ':': Arithmetic & logical. +* 3D PostScript: three. (line 580) +* :: Arithmetic & logical. (line 61) -* '::': Bezier curves. (line 70) -* '<': Arithmetic & logical. +* ::: Bezier curves. (line 70) +* <: Arithmetic & logical. (line 39) -* '<=': Arithmetic & logical. +* <=: Arithmetic & logical. (line 41) -* '==': Structures. (line 62) -* '==' <1>: Arithmetic & logical. +* ==: Structures. (line 62) +* == <1>: Arithmetic & logical. (line 36) -* '>': Arithmetic & logical. +* >: Arithmetic & logical. (line 45) -* '>=': Arithmetic & logical. +* >=: Arithmetic & logical. (line 43) -* '?': Arithmetic & logical. +* ?: Arithmetic & logical. (line 61) -* '^': Arithmetic & logical. +* ^: Arithmetic & logical. (line 29) -* '^' <1>: Arithmetic & logical. +* ^ <1>: Arithmetic & logical. (line 55) -* '^=': Self & prefix operators. +* ^=: Self & prefix operators. (line 6) -* '^^': Paths. (line 23) -* '|': Arithmetic & logical. +* ^^: Paths. (line 23) +* |: Arithmetic & logical. (line 53) -* '||': Arithmetic & logical. +* ||: Arithmetic & logical. (line 51) -* 'a4': Configuring. (line 59) -* 'abort': Data types. (line 358) -* 'abs': Data types. (line 65) -* 'abs' <1>: Mathematical functions. +* a4: Configuring. (line 58) +* abort: Data types. (line 363) +* abs: Data types. (line 65) +* abs <1>: Mathematical functions. (line 35) -* 'accel': Paths and guides. (line 126) -* 'accel' <1>: Paths and guides. (line 132) -* 'accel' <2>: three. (line 484) -* 'access': Import. (line 6) +* accel: Paths and guides. (line 126) +* accel <1>: Paths and guides. (line 132) +* accel <2>: three. (line 484) +* access: Import. (line 6) * acknowledgments: Credits. (line 6) -* 'acos': Mathematical functions. +* acos: Mathematical functions. (line 6) -* 'aCos': Mathematical functions. +* aCos: Mathematical functions. (line 20) -* 'acosh': Mathematical functions. +* acosh: Mathematical functions. (line 6) -* 'add': Frames and pictures. +* add: Frames and pictures. (line 212) -* 'add' <1>: Frames and pictures. +* add <1>: Frames and pictures. (line 228) -* 'add' <2>: three. (line 256) -* 'addViews': three. (line 377) -* 'adjust': Pens. (line 119) -* 'Ai': Mathematical functions. +* add <2>: three. (line 256) +* addViews: three. (line 377) +* adjust: Pens. (line 119) +* Ai: Mathematical functions. (line 48) * Airy: Mathematical functions. (line 48) -* 'Ai_deriv': Mathematical functions. +* Ai_deriv: Mathematical functions. (line 48) * alias: Structures. (line 62) -* 'alias': Arrays. (line 171) -* 'Align': label. (line 12) -* 'aligndir': Options. (line 175) -* 'all': Arrays. (line 319) -* 'Allow': Pens. (line 343) -* 'and': Bezier curves. (line 56) -* 'AND': Arithmetic & logical. +* alias <1>: Arrays. (line 174) +* Align: label. (line 12) +* aligndir: Options. (line 175) +* all: Arrays. (line 322) +* Allow: Pens. (line 343) +* and: Bezier curves. (line 56) +* AND: Arithmetic & logical. (line 68) -* 'angle': Data types. (line 73) -* 'animate': Configuring. (line 65) -* 'animate' <1>: Files. (line 155) -* 'animate' <2>: animation. (line 12) -* 'animation': animation. (line 6) +* angle: Data types. (line 73) +* animate: Configuring. (line 64) +* animate <1>: Files. (line 155) +* animate <2>: animation. (line 12) * animation: animation. (line 6) -* 'annotate': annotate. (line 6) -* 'antialias': three. (line 195) -* 'antialias' <1>: Options. (line 146) +* animation <1>: animation. (line 6) +* annotate: annotate. (line 6) +* antialias: three. (line 195) +* antialias <1>: Options. (line 146) * append: Files. (line 36) -* 'append': Arrays. (line 39) -* 'arc': Paths and guides. (line 24) -* 'Arc': Paths and guides. (line 37) -* 'arc' <1>: three. (line 267) -* 'ArcArrow': draw. (line 26) -* 'ArcArrow3': three. (line 547) -* 'ArcArrows': draw. (line 26) -* 'ArcArrows3': three. (line 547) -* 'arclength': Paths and guides. (line 153) -* 'arclength' <1>: three. (line 484) -* 'arcpoint': Paths and guides. (line 163) -* 'arctime': Paths and guides. (line 157) -* 'arctime' <1>: three. (line 484) +* append <1>: Arrays. (line 39) +* arc: Paths and guides. (line 24) +* Arc: Paths and guides. (line 37) +* arc <1>: three. (line 267) +* ArcArrow: draw. (line 26) +* ArcArrow3: three. (line 547) +* ArcArrows: draw. (line 26) +* ArcArrows3: three. (line 547) +* arclength: Paths and guides. (line 153) +* arclength <1>: three. (line 484) +* arcpoint: Paths and guides. (line 163) +* arctime: Paths and guides. (line 157) +* arctime <1>: three. (line 484) * arguments: Default arguments. (line 6) * arithmetic operators: Arithmetic & logical. (line 6) -* 'array': Arrays. (line 112) +* array: Data types. (line 283) +* array <1>: Arrays. (line 112) * array iteration: Programming. (line 52) * arrays: Arrays. (line 6) -* 'arrow': Drawing commands. (line 31) -* 'Arrow': draw. (line 26) -* 'arrow' <1>: label. (line 70) +* arrow: Drawing commands. (line 31) +* Arrow: draw. (line 26) +* arrow <1>: label. (line 70) * arrow keys: Drawing in interactive mode. (line 11) -* 'Arrow3': three. (line 547) +* Arrow3: three. (line 547) * arrows: draw. (line 26) -* 'Arrows': draw. (line 26) -* 'Arrows3': three. (line 547) -* 'as': Import. (line 67) -* 'ascii': Data types. (line 303) -* 'ascii' <1>: Data types. (line 303) -* 'asin': Mathematical functions. +* Arrows: draw. (line 26) +* Arrows3: three. (line 547) +* as: Import. (line 67) +* ascii: Data types. (line 308) +* ascii <1>: Data types. (line 308) +* asin: Mathematical functions. (line 6) -* 'aSin': Mathematical functions. +* aSin: Mathematical functions. (line 20) -* 'asinh': Mathematical functions. +* asinh: Mathematical functions. (line 6) -* 'Aspect': Frames and pictures. +* Aspect: Frames and pictures. (line 59) -* 'assert': Data types. (line 363) +* assert: Data types. (line 368) * assignment: Programming. (line 26) -* 'asy': Data types. (line 353) -* 'asy' <1>: Import. (line 101) -* 'asy-mode': Editing modes. (line 6) -* 'asy.vim': Editing modes. (line 32) -* 'asyinclude': LaTeX usage. (line 45) -* 'asymptote.sty': LaTeX usage. (line 6) -* 'asymptote.xml': Editing modes. (line 48) -* 'ASYMPTOTE_CONFIG': Options. (line 117) -* 'atan': Mathematical functions. +* asy: Data types. (line 358) +* asy <1>: Import. (line 101) +* asy-mode: Editing modes. (line 6) +* asy.vim: Editing modes. (line 32) +* asyinclude: LaTeX usage. (line 45) +* asymptote.sty: LaTeX usage. (line 6) +* asymptote.xml: Editing modes. (line 48) +* ASYMPTOTE_CONFIG: Options. (line 117) +* atan: Mathematical functions. (line 6) -* 'aTan': Mathematical functions. +* aTan: Mathematical functions. (line 20) -* 'atan2': Mathematical functions. +* atan2: Mathematical functions. (line 6) -* 'atanh': Mathematical functions. +* atanh: Mathematical functions. (line 6) -* 'atleast': Bezier curves. (line 56) -* 'attach': Frames and pictures. +* atleast: Bezier curves. (line 56) +* attach: Frames and pictures. (line 273) -* 'attach' <1>: LaTeX usage. (line 50) -* 'attach' <2>: graph. (line 407) -* 'autoadjust': three. (line 342) -* 'autoimport': Options. (line 113) +* attach <1>: LaTeX usage. (line 50) +* attach <2>: graph. (line 407) +* autoadjust: three. (line 342) +* autoimport: Options. (line 113) * automatic scaling: graph. (line 691) * automatic scaling <1>: graph. (line 691) -* 'axialshade': fill. (line 43) -* 'axis': graph. (line 906) -* 'axis' <1>: graph. (line 989) -* 'axis' <2>: graph3. (line 66) -* 'axis' <3>: graph3. (line 82) -* 'azimuth': Data types. (line 153) -* 'babel': babel. (line 6) +* axialshade: fill. (line 43) +* axis: graph. (line 906) +* axis <1>: graph. (line 989) +* axis <2>: graph3. (line 66) +* axis <3>: graph3. (line 82) +* azimuth: Data types. (line 153) +* babel: babel. (line 6) * background color: Frames and pictures. (line 180) -* 'BackView': three. (line 370) -* 'Bar': draw. (line 19) -* 'Bar3': three. (line 547) -* 'Bars': draw. (line 19) -* 'Bars3': three. (line 547) -* 'barsize': draw. (line 19) +* BackView: three. (line 370) +* Bar: draw. (line 19) +* Bar3: three. (line 547) +* Bars: draw. (line 19) +* Bars3: three. (line 547) +* barsize: draw. (line 19) * base modules: Base modules. (line 6) -* 'basealign': Pens. (line 177) -* 'baseline': label. (line 90) +* basealign: Pens. (line 177) +* baseline: label. (line 90) * batch mode: Drawing in batch mode. (line 6) -* 'beep': Data types. (line 376) -* 'BeginArcArrow': draw. (line 26) -* 'BeginArcArrow3': three. (line 547) -* 'BeginArrow': draw. (line 26) -* 'BeginArrow3': three. (line 547) -* 'BeginBar': draw. (line 19) -* 'BeginBar3': three. (line 547) -* 'BeginDotMargin': draw. (line 42) -* 'BeginDotMargin3': three. (line 563) -* 'BeginMargin': draw. (line 42) -* 'BeginMargin3': three. (line 563) -* 'BeginPenMargin': draw. (line 42) -* 'BeginPenMargin2': three. (line 563) -* 'BeginPenMargin3': three. (line 563) -* 'BeginPoint': label. (line 55) +* beep: Data types. (line 381) +* BeginArcArrow: draw. (line 26) +* BeginArcArrow3: three. (line 547) +* BeginArrow: draw. (line 26) +* BeginArrow3: three. (line 547) +* BeginBar: draw. (line 19) +* BeginBar3: three. (line 547) +* BeginDotMargin: draw. (line 42) +* BeginDotMargin3: three. (line 563) +* BeginMargin: draw. (line 42) +* BeginMargin3: three. (line 563) +* BeginPenMargin: draw. (line 42) +* BeginPenMargin2: three. (line 563) +* BeginPenMargin3: three. (line 563) +* BeginPoint: label. (line 55) * Bessel: Mathematical functions. (line 48) -* 'bevel': flowchart. (line 72) -* 'beveljoin': Pens. (line 145) +* bevel: flowchart. (line 72) +* beveljoin: Pens. (line 145) * Bezier curves: Bezier curves. (line 6) -* 'Bezier patch': three. (line 88) -* 'Bezier triangle': three. (line 88) -* 'bezulate': three. (line 106) -* 'Bi': Mathematical functions. +* Bezier patch: three. (line 88) +* Bezier triangle: three. (line 88) +* bezulate: three. (line 106) +* Bi: Mathematical functions. (line 48) -* 'Billboard': three. (line 454) -* 'binary': Files. (line 76) +* Billboard: three. (line 454) +* binary: Files. (line 76) * binary format: Files. (line 76) * binary operators: Arithmetic & logical. (line 6) -* 'binarytree': binarytree. (line 6) -* 'Bi_deriv': Mathematical functions. +* binarytree: binarytree. (line 6) +* Bi_deriv: Mathematical functions. (line 48) -* 'black stripes': three. (line 195) -* 'Blank': draw. (line 26) -* 'block.bottom': flowchart. (line 19) -* 'block.bottomleft': flowchart. (line 19) -* 'block.bottomright': flowchart. (line 19) -* 'block.center': flowchart. (line 24) -* 'block.draw': flowchart. (line 29) -* 'block.left': flowchart. (line 19) -* 'block.position': flowchart. (line 23) -* 'block.right': flowchart. (line 19) -* 'block.top': flowchart. (line 19) -* 'block.topleft': flowchart. (line 19) -* 'block.topright': flowchart. (line 19) -* 'bool': Data types. (line 14) -* 'bool3': Data types. (line 25) +* black stripes: three. (line 195) +* Blank: draw. (line 26) +* block.bottom: flowchart. (line 19) +* block.bottomleft: flowchart. (line 19) +* block.bottomright: flowchart. (line 19) +* block.center: flowchart. (line 24) +* block.draw: flowchart. (line 29) +* block.left: flowchart. (line 19) +* block.position: flowchart. (line 23) +* block.right: flowchart. (line 19) +* block.top: flowchart. (line 19) +* block.topleft: flowchart. (line 19) +* block.topright: flowchart. (line 19) +* bool: Data types. (line 14) +* bool3: Data types. (line 25) * boolean operators: Arithmetic & logical. (line 6) -* 'Bottom': graph. (line 132) -* 'BottomTop': graph. (line 138) -* 'BottomView': three. (line 370) +* Bottom: graph. (line 132) +* BottomTop: graph. (line 138) +* BottomView: three. (line 370) * bounding box: Frames and pictures. (line 180) -* 'Bounds': graph3. (line 21) -* 'box': Frames and pictures. +* Bounds: graph3. (line 21) +* box: Frames and pictures. (line 25) -* 'box' <1>: Frames and pictures. +* box <1>: Frames and pictures. (line 130) -* 'box' <2>: three. (line 289) -* 'box' <3>: three. (line 291) -* 'bp': Drawing in batch mode. +* box <2>: three. (line 289) +* box <3>: three. (line 291) +* bp: Drawing in batch mode. (line 23) -* 'brace': Paths and guides. (line 51) -* 'break': Programming. (line 48) -* 'breakpoints': Debugger. (line 21) +* brace: Paths and guides. (line 51) +* break: Programming. (line 48) +* breakpoints: Debugger. (line 21) * brick: Pens. (line 265) * broken axis: graph. (line 802) * bug reports: Help. (line 19) -* 'buildcycle': Paths and guides. (line 270) -* 'Button-1': GUI. (line 6) -* 'Button-2': GUI. (line 6) -* 'BWRainbow': palette. (line 15) -* 'BWRainbow2': palette. (line 18) -* 'C' string: Data types. (line 216) -* 'CAD': CAD. (line 6) -* 'calculateTransform': Frames and pictures. +* buildcycle: Paths and guides. (line 270) +* Button-1: GUI. (line 6) +* Button-2: GUI. (line 6) +* BWRainbow: palette. (line 15) +* BWRainbow2: palette. (line 18) +* C string: Data types. (line 216) +* CAD: CAD. (line 6) +* calculateTransform: Frames and pictures. (line 118) -* 'camera': three. (line 336) +* camera: three. (line 336) * casts: Casts. (line 6) -* 'cbrt': Mathematical functions. +* cbrt: Mathematical functions. (line 6) -* 'cd': Files. (line 25) -* 'ceil': Mathematical functions. +* cd: Files. (line 25) +* ceil: Mathematical functions. (line 26) -* 'Center': label. (line 60) -* 'center': three. (line 319) +* Center: label. (line 60) +* center: three. (line 319) * checker: Pens. (line 265) * Chinese: unicode. (line 12) -* 'choose': Mathematical functions. +* choose: Mathematical functions. (line 39) -* 'Ci': Mathematical functions. +* Ci: Mathematical functions. (line 48) -* 'circle': Paths and guides. (line 10) -* 'Circle': Paths and guides. (line 18) -* 'circle' <1>: three. (line 263) -* 'circle' <2>: flowchart. (line 61) -* 'circlebarframe': markers. (line 18) +* circle: Paths and guides. (line 10) +* Circle: Paths and guides. (line 18) +* circle <1>: three. (line 263) +* circle <2>: flowchart. (line 61) +* circlebarframe: markers. (line 18) * CJK: unicode. (line 12) -* 'clamped': graph. (line 36) -* 'clear': Files. (line 93) -* 'clear' <1>: Debugger. (line 23) -* 'clip': clip. (line 6) -* 'CLZ': Arithmetic & logical. +* clamped: graph. (line 36) +* clear: Files. (line 93) +* clear <1>: Debugger. (line 23) +* clip: clip. (line 6) +* CLZ: Arithmetic & logical. (line 68) -* 'cm': Figure size. (line 18) -* 'cmd': Configuring. (line 32) -* 'cmyk': Pens. (line 34) -* 'colatitude': Data types. (line 158) +* cm: Figure size. (line 18) +* cmd: Configuring. (line 31) +* cmyk: Pens. (line 34) +* colatitude: Data types. (line 158) * color: Pens. (line 23) -* 'coloredNodes': tube. (line 25) -* 'coloredpath': tube. (line 18) -* 'coloredSegments': tube. (line 25) -* 'colorless': Pens. (line 53) -* 'colors': Pens. (line 50) -* 'comma': Files. (line 61) -* comma-separated-value mode: Arrays. (line 351) -* command-line options: Configuring. (line 84) +* coloredNodes: tube. (line 25) +* coloredpath: tube. (line 18) +* coloredSegments: tube. (line 25) +* colorless: Pens. (line 53) +* colors: Pens. (line 50) +* comma: Files. (line 61) +* comma-separated-value mode: Arrays. (line 354) +* command-line options: Configuring. (line 83) * command-line options <1>: Options. (line 6) * comment character: Files. (line 16) * compass directions: Labels. (line 18) * Compiling from UNIX source: Compiling from UNIX source. (line 6) -* 'complement': Arrays. (line 140) -* 'concat': Arrays. (line 167) +* complement: Arrays. (line 140) +* concat: Arrays. (line 170) * conditional: Programming. (line 26) * conditional <1>: Arithmetic & logical. (line 61) -* 'config': Configuring. (line 65) -* 'config' <1>: Options. (line 117) -* configuration file: Configuring. (line 22) +* config: Configuring. (line 64) +* config <1>: Options. (line 117) +* configuration file: Configuring. (line 21) * configuration file <1>: Options. (line 117) * configuring: Configuring. (line 6) -* 'conj': Data types. (line 62) +* conj: Data types. (line 62) * constructors: Structures. (line 91) -* 'context': Options. (line 146) -* 'continue': Programming. (line 48) -* 'continue' <1>: Debugger. (line 31) -* 'contour': contour. (line 6) -* 'contour3': contour3. (line 6) -* 'controls': Bezier curves. (line 45) -* 'controls' <1>: three. (line 6) -* 'controlSpecifier': Paths and guides. (line 396) -* 'convert': Configuring. (line 65) -* 'convert' <1>: Files. (line 155) -* 'convert' <2>: animation. (line 6) -* 'convert' <3>: Options. (line 146) -* 'convertOptions': Options. (line 132) +* context: Options. (line 146) +* continue: Programming. (line 48) +* continue <1>: Debugger. (line 31) +* contour: contour. (line 6) +* contour3: contour3. (line 6) +* controls: Bezier curves. (line 45) +* controls <1>: three. (line 6) +* controlSpecifier: Paths and guides. (line 396) +* convert: Configuring. (line 64) +* convert <1>: Files. (line 155) +* convert <2>: animation. (line 6) +* convert <3>: Options. (line 146) +* convertOptions: Options. (line 132) * Coons shading: fill. (line 77) -* 'copy': Arrays. (line 164) -* 'cos': Mathematical functions. +* copy: Arrays. (line 167) +* cos: Mathematical functions. (line 6) -* 'Cos': Mathematical functions. +* Cos: Mathematical functions. (line 20) -* 'cosh': Mathematical functions. +* cosh: Mathematical functions. (line 6) -* 'cputime': Structures. (line 169) -* 'crop': graph. (line 640) +* cputime: Structures. (line 169) +* crop: graph. (line 640) * cropping graphs: graph. (line 640) -* 'cross': Data types. (line 106) -* 'cross' <1>: Data types. (line 196) -* 'cross' <2>: graph. (line 481) -* 'crossframe': markers. (line 22) +* cross: Data types. (line 106) +* cross <1>: Data types. (line 196) +* cross <2>: graph. (line 481) +* crossframe: markers. (line 22) * crosshatch: Pens. (line 282) -* 'csv': Arrays. (line 351) -* 'CTZ': Arithmetic & logical. +* csv: Arrays. (line 354) +* CTZ: Arithmetic & logical. (line 68) -* 'cubicroots': Arrays. (line 308) -* 'curl': Bezier curves. (line 66) -* 'curl' <1>: three. (line 6) -* 'curlSpecifier': Paths and guides. (line 408) -* 'currentpen': Pens. (line 6) -* 'currentprojection': three. (line 367) -* 'curve': slopefield. (line 20) +* cubicroots: Arrays. (line 311) +* curl: Bezier curves. (line 66) +* curl <1>: three. (line 6) +* curlSpecifier: Paths and guides. (line 408) +* currentpen: Pens. (line 6) +* currentprojection: three. (line 367) +* curve: slopefield. (line 20) * custom axis types: graph. (line 141) * custom mark routine: graph. (line 578) * custom tick locations: graph. (line 233) -* 'cut': Paths and guides. (line 251) -* 'cycle': Figure size. (line 29) -* 'cycle' <1>: Paths. (line 16) -* 'cycle' <2>: three. (line 6) -* 'cyclic': Paths and guides. (line 85) -* 'cyclic' <1>: Paths and guides. (line 376) -* 'cyclic' <2>: Arrays. (line 39) -* 'cyclic' <3>: three. (line 484) +* cut: Paths and guides. (line 251) +* cycle: Figure size. (line 29) +* cycle <1>: Paths. (line 16) +* cycle <2>: three. (line 6) +* cyclic: Paths and guides. (line 85) +* cyclic <1>: Paths and guides. (line 376) +* cyclic <2>: Arrays. (line 39) +* cyclic <3>: three. (line 484) * Cyrillic: unicode. (line 7) -* 'dashdotted': Pens. (line 98) -* 'dashed': Pens. (line 98) +* dashdotted: Pens. (line 98) +* dashed: Pens. (line 98) * data types: Data types. (line 6) -* 'date': Data types. (line 315) +* date: Data types. (line 320) * Debian: UNIX binary distributions. (line 19) * debugger: Debugger. (line 6) * declaration: Programming. (line 26) -* 'deconstruct': GUI usage. (line 6) +* deconstruct: GUI usage. (line 6) * default arguments: Default arguments. (line 6) -* 'defaultformat': graph. (line 175) -* 'DefaultHead': draw. (line 26) -* 'DefaultHead3': three. (line 547) -* 'defaultpen': Pens. (line 45) -* 'defaultpen' <1>: Pens. (line 118) -* 'defaultpen' <2>: Pens. (line 123) -* 'defaultpen' <3>: Pens. (line 135) -* 'defaultpen' <4>: Pens. (line 188) -* 'defaultpen' <5>: Pens. (line 343) -* 'defaultpen' <6>: Pens. (line 367) -* 'defaultrender': three. (line 46) -* 'deferred drawing': simplex. (line 6) -* 'degrees': Data types. (line 78) -* 'degrees' <1>: Mathematical functions. +* defaultformat: graph. (line 175) +* DefaultHead: draw. (line 26) +* DefaultHead3: three. (line 547) +* defaultpen: Pens. (line 45) +* defaultpen <1>: Pens. (line 118) +* defaultpen <2>: Pens. (line 123) +* defaultpen <3>: Pens. (line 135) +* defaultpen <4>: Pens. (line 188) +* defaultpen <5>: Pens. (line 343) +* defaultpen <6>: Pens. (line 367) +* defaultrender: three. (line 46) +* deferred drawing: simplex. (line 6) +* degrees: Data types. (line 78) +* degrees <1>: Mathematical functions. (line 17) -* 'Degrees': Mathematical functions. +* Degrees: Mathematical functions. (line 17) -* 'delete': Files. (line 150) -* 'delete' <1>: Arrays. (line 39) +* delete: Files. (line 150) +* delete <1>: Arrays. (line 39) * description: Description. (line 6) -* 'diagonal': Arrays. (line 293) -* 'diamond': flowchart. (line 54) -* 'dimension': Arrays. (line 356) -* 'dir': Search paths. (line 9) -* 'dir' <1>: Data types. (line 90) -* 'dir' <2>: Data types. (line 180) -* 'dir' <3>: Paths and guides. (line 109) -* 'dir' <4>: three. (line 484) +* diagonal: Arrays. (line 296) +* diamond: flowchart. (line 54) +* dimension: Arrays. (line 359) +* dir: Search paths. (line 9) +* dir <1>: Data types. (line 90) +* dir <2>: Data types. (line 180) +* dir <3>: Paths and guides. (line 109) +* dir <4>: three. (line 484) * direction specifier: Bezier curves. (line 6) * directory: Files. (line 25) -* 'dirSpecifier': Paths and guides. (line 390) -* 'dirtime': Paths and guides. (line 166) -* 'display': Configuring. (line 65) -* 'do': Programming. (line 48) -* 'DOSendl': Files. (line 61) -* 'DOSnewl': Files. (line 61) -* 'dot': draw. (line 82) -* 'dot' <1>: Data types. (line 103) -* 'dot' <2>: Data types. (line 193) -* 'dot' <3>: Arrays. (line 248) -* 'dot' <4>: Arrays. (line 251) -* 'DotMargin': draw. (line 42) -* 'DotMargin3': three. (line 563) -* 'DotMargins': draw. (line 42) -* 'DotMargins3': three. (line 563) -* 'dotted': Pens. (line 98) -* 'double deferred drawing': three. (line 241) +* dirSpecifier: Paths and guides. (line 390) +* dirtime: Paths and guides. (line 166) +* display: Configuring. (line 64) +* do: Programming. (line 48) +* DOSendl: Files. (line 61) +* DOSnewl: Files. (line 61) +* dot: draw. (line 82) +* dot <1>: Data types. (line 103) +* dot <2>: Data types. (line 193) +* dot <3>: Arrays. (line 251) +* dot <4>: Arrays. (line 254) +* DotMargin: draw. (line 42) +* DotMargin3: three. (line 563) +* DotMargins: draw. (line 42) +* DotMargins3: three. (line 563) +* dotted: Pens. (line 98) +* double deferred drawing: three. (line 241) * double precision: Files. (line 76) -* 'draw': Drawing commands. (line 31) -* 'draw' <1>: draw. (line 6) -* 'Draw': draw. (line 26) -* 'draw' <2>: draw. (line 109) -* 'Draw' <1>: Frames and pictures. +* draw: Drawing commands. (line 31) +* draw <1>: draw. (line 6) +* Draw: draw. (line 26) +* draw <2>: draw. (line 109) +* Draw <1>: Frames and pictures. (line 160) -* 'draw' <3>: three. (line 114) +* draw <3>: three. (line 114) * drawing commands: Drawing commands. (line 6) -* 'drawline': math. (line 9) -* 'drawtree': drawtree. (line 6) -* 'dvips': Configuring. (line 65) -* 'dvipsOptions': Options. (line 132) -* 'dvisvgm': Configuring. (line 65) -* 'dvisvgm' <1>: Options. (line 151) -* 'dvisvgmOptions': Options. (line 132) -* 'E': Labels. (line 18) -* 'E' <1>: Mathematical functions. +* drawline: math. (line 9) +* drawtree: drawtree. (line 6) +* dvips: Configuring. (line 64) +* dvipsOptions: Options. (line 132) +* dvisvgm: Configuring. (line 64) +* dvisvgm <1>: Options. (line 151) +* dvisvgmOptions: Options. (line 132) +* E: Labels. (line 18) +* E <1>: Mathematical functions. (line 48) * Editing modes: Editing modes. (line 6) -* 'Ei': Mathematical functions. +* Ei: Mathematical functions. (line 48) -* 'ellipse': Paths and guides. (line 45) -* 'ellipse' <1>: Frames and pictures. +* ellipse: Paths and guides. (line 45) +* ellipse <1>: Frames and pictures. (line 25) * elliptic functions: Mathematical functions. (line 48) -* 'else': Programming. (line 26) -* 'emacs': Editing modes. (line 6) -* 'embed': embed. (line 6) -* 'Embedded': three. (line 454) -* 'empty': Frames and pictures. +* else: Programming. (line 26) +* emacs: Editing modes. (line 6) +* embed: embed. (line 6) +* Embedded: three. (line 454) +* empty: Frames and pictures. (line 7) -* 'EndArcArrow': draw. (line 26) -* 'EndArcArrow3': three. (line 547) -* 'EndArrow': draw. (line 26) -* 'EndArrow3': three. (line 547) -* 'EndBar': draw. (line 19) -* 'EndBar3': three. (line 547) -* 'EndDotMargin': draw. (line 42) -* 'EndDotMargin3': three. (line 563) -* 'endl': Files. (line 61) -* 'EndMargin': draw. (line 42) -* 'EndMargin3': three. (line 563) -* 'EndPenMargin': draw. (line 42) -* 'EndPenMargin2': three. (line 563) -* 'EndPenMargin3': three. (line 563) -* 'EndPoint': label. (line 55) -* 'envelope': Frames and pictures. +* EndArcArrow: draw. (line 26) +* EndArcArrow3: three. (line 547) +* EndArrow: draw. (line 26) +* EndArrow3: three. (line 547) +* EndBar: draw. (line 19) +* EndBar3: three. (line 547) +* EndDotMargin: draw. (line 42) +* EndDotMargin3: three. (line 563) +* endl: Files. (line 61) +* EndMargin: draw. (line 42) +* EndMargin3: three. (line 563) +* EndPenMargin: draw. (line 42) +* EndPenMargin2: three. (line 563) +* EndPenMargin3: three. (line 563) +* EndPoint: label. (line 55) +* envelope: Frames and pictures. (line 25) -* environment variables: Configuring. (line 88) -* 'eof': Files. (line 93) -* 'eof' <1>: Arrays. (line 333) -* 'eol': Files. (line 93) -* 'eol' <1>: Arrays. (line 333) +* environment variables: Configuring. (line 87) +* eof: Files. (line 93) +* eof <1>: Arrays. (line 336) +* eol: Files. (line 93) +* eol <1>: Arrays. (line 336) * EPS: label. (line 78) -* 'EPS': Options. (line 146) +* EPS <1>: Options. (line 146) * erase: Drawing in interactive mode. (line 11) -* 'erase': Data types. (line 256) -* 'erase' <1>: Frames and pictures. +* erase <1>: Data types. (line 256) +* erase <2>: Frames and pictures. (line 7) -* 'erase' <2>: Frames and pictures. +* erase <3>: Frames and pictures. (line 281) -* 'erf': Mathematical functions. +* erf: Mathematical functions. (line 6) -* 'erfc': Mathematical functions. +* erfc: Mathematical functions. (line 6) -* 'error': Files. (line 16) -* 'error' <1>: Files. (line 93) +* error: Files. (line 16) +* error <1>: Files. (line 93) * error bars: graph. (line 532) -* 'errorbars': graph. (line 481) -* 'eval': Import. (line 97) -* 'eval' <1>: Import. (line 107) +* errorbars: graph. (line 481) +* eval: Import. (line 97) +* eval <1>: Import. (line 107) * evenodd: Paths. (line 37) -* 'evenodd': Pens. (line 160) -* 'exit': Data types. (line 367) -* 'exit' <1>: Interactive mode. (line 54) -* 'exit' <2>: Debugger. (line 56) -* 'exp': Mathematical functions. +* evenodd <1>: Pens. (line 160) +* exit: Data types. (line 372) +* exit <1>: Interactive mode. (line 54) +* exit <2>: Debugger. (line 56) +* exp: Mathematical functions. (line 6) -* 'expi': Data types. (line 86) -* 'expi' <1>: Data types. (line 176) -* 'explicit': Casts. (line 6) +* expi: Data types. (line 86) +* expi <1>: Data types. (line 176) +* explicit: Casts. (line 6) * explicit casts: Casts. (line 21) -* 'expm1': Mathematical functions. +* expm1: Mathematical functions. (line 6) * exponential integral: Mathematical functions. (line 48) -* 'extendcap': Pens. (line 135) -* 'extension': Paths and guides. (line 246) -* 'extension' <1>: MetaPost. (line 10) -* 'external': embed. (line 11) -* 'extrude': three. (line 478) -* 'F': Mathematical functions. +* extendcap: Pens. (line 135) +* extension: Paths and guides. (line 246) +* extension <1>: MetaPost. (line 10) +* external: embed. (line 11) +* extrude: three. (line 478) +* F: Mathematical functions. (line 48) -* 'fabs': Mathematical functions. +* fabs: Mathematical functions. (line 6) -* 'face': three. (line 588) -* 'factorial': Mathematical functions. +* face: three. (line 588) +* factorial: Mathematical functions. (line 39) * Fedora: UNIX binary distributions. (line 15) -* 'feynman': feynman. (line 6) -* 'fft': Arrays. (line 234) -* 'fft' <1>: math. (line 26) -* 'FFTW': Compiling from UNIX source. +* feynman: feynman. (line 6) +* fft: Arrays. (line 237) +* fft <1>: math. (line 26) +* FFTW: Compiling from UNIX source. (line 63) -* 'file': Files. (line 6) -* 'file' <1>: Debugger. (line 44) -* 'Fill': draw. (line 26) -* 'fill': draw. (line 114) -* 'fill' <1>: fill. (line 6) -* 'fill' <2>: fill. (line 17) -* 'Fill' <1>: Frames and pictures. +* file: Files. (line 6) +* file <1>: Debugger. (line 44) +* Fill: draw. (line 26) +* fill: draw. (line 114) +* fill <1>: fill. (line 6) +* fill <2>: fill. (line 17) +* Fill <1>: Frames and pictures. (line 146) -* 'FillDraw': draw. (line 26) -* 'filldraw': fill. (line 11) -* 'FillDraw' <1>: Frames and pictures. +* FillDraw: draw. (line 26) +* filldraw: fill. (line 11) +* FillDraw <1>: Frames and pictures. (line 136) -* 'filloutside': fill. (line 27) -* 'fillrule': Pens. (line 160) -* 'find': Data types. (line 241) -* 'find' <1>: Arrays. (line 149) -* 'firstcut': Paths and guides. (line 262) -* 'fit': Frames and pictures. +* filloutside: fill. (line 27) +* fillrule: Pens. (line 160) +* find: Data types. (line 241) +* find <1>: Arrays. (line 149) +* findall: Arrays. (line 154) +* firstcut: Paths and guides. (line 262) +* fit: Frames and pictures. (line 113) -* 'fit3': three. (line 254) -* 'fixedscaling': Frames and pictures. +* fit3: three. (line 254) +* fixedscaling: Frames and pictures. (line 81) -* 'floor': Mathematical functions. +* floor: Mathematical functions. (line 26) -* 'flowchart': flowchart. (line 6) -* 'flush': Files. (line 61) -* 'flush' <1>: Files. (line 93) -* 'fmod': Mathematical functions. +* flowchart: flowchart. (line 6) +* flush: Files. (line 61) +* flush <1>: Files. (line 93) +* fmod: Mathematical functions. (line 6) -* 'font': Pens. (line 202) -* 'font command': Pens. (line 202) -* 'fontcommand': Pens. (line 217) -* 'fontsize': Pens. (line 188) -* 'for': Programming. (line 26) -* 'format': Data types. (line 284) -* 'format' <1>: Options. (line 146) +* font: Pens. (line 202) +* font command: Pens. (line 202) +* fontcommand: Pens. (line 217) +* fontsize: Pens. (line 188) +* for: Programming. (line 26) +* format: Data types. (line 289) +* format <1>: Options. (line 146) * forum: Help. (line 6) -* 'frame': Frames and pictures. +* frame: Frames and pictures. (line 7) -* 'from': Import. (line 16) -* 'FrontView': three. (line 370) +* from: Import. (line 16) +* FrontView: three. (line 370) * function declarations: Functions. (line 79) * Function shading: fill. (line 99) * function shading: fill. (line 99) * functions: Functions. (line 6) * functions <1>: Mathematical functions. (line 6) -* 'functionshade': fill. (line 99) -* 'gamma': Mathematical functions. +* functionshade: fill. (line 99) +* gamma: Mathematical functions. (line 6) -* 'Gaussrand': Mathematical functions. +* Gaussrand: Mathematical functions. (line 39) -* 'geometry': geometry. (line 6) -* 'getc': Files. (line 30) -* 'getpair': Files. (line 118) -* 'getreal': Files. (line 118) -* 'getstring': Files. (line 118) -* 'gettriple': Files. (line 118) +* geometry: geometry. (line 6) +* getc: Files. (line 30) +* getpair: Files. (line 118) +* getreal: Files. (line 118) +* getstring: Files. (line 118) +* gettriple: Files. (line 118) * git: Git. (line 6) -* 'glOptions': three. (line 195) -* 'glOptions' <1>: Options. (line 132) +* glOptions: three. (line 195) +* glOptions <1>: Options. (line 132) * GNU Scientific Library: Mathematical functions. (line 48) -* 'gouraudshade': fill. (line 62) -* 'Gradient': palette. (line 25) +* gouraudshade: fill. (line 62) +* Gradient: palette. (line 25) * gradient shading: fill. (line 32) -* 'graph': graph. (line 6) -* 'graph3': graph3. (line 6) -* 'graphic': label. (line 78) +* graph: graph. (line 6) +* graph3: graph3. (line 6) +* graphic: label. (line 78) * graphical user interface: GUI. (line 6) -* 'gray': Pens. (line 25) +* gray: Pens. (line 25) * grayscale: Pens. (line 25) -* 'Grayscale': palette. (line 9) +* Grayscale: palette. (line 9) * grid: Pens. (line 265) * grid <1>: graph. (line 747) -* 'grid3': grid3. (line 6) -* 'gs': Configuring. (line 6) -* 'GSL': Compiling from UNIX source. +* grid3: grid3. (line 6) +* gs: Configuring. (line 6) +* GSL: Compiling from UNIX source. (line 63) -* 'gsl': Mathematical functions. +* gsl: Mathematical functions. (line 48) -* 'gsOptions': Options. (line 132) +* gsOptions: Options. (line 132) * GUI: GUI. (line 6) * GUI installation: GUI installation. (line 6) * GUI usage: GUI usage. (line 6) -* 'guide': Paths and guides. (line 314) -* 'guide3': three. (line 6) +* guide: Paths and guides. (line 314) +* guide3: three. (line 6) * hatch: Pens. (line 282) -* 'height': LaTeX usage. (line 50) -* 'help': Interactive mode. (line 42) -* help: Help. (line 6) -* 'help' <1>: Debugger. (line 30) -* 'Hermite': graph. (line 36) -* 'Hermite(splinetype splinetype': graph. (line 36) -* 'hex': Data types. (line 300) -* 'hex' <1>: Pens. (line 60) -* 'hexidecimal': Data types. (line 300) -* 'hexidecimal' <1>: Pens. (line 58) +* height: LaTeX usage. (line 50) +* help: Interactive mode. (line 42) +* help <1>: Help. (line 6) +* help <2>: Debugger. (line 30) +* Hermite: graph. (line 36) +* Hermite(splinetype splinetype: graph. (line 36) +* hex: Data types. (line 305) +* hex <1>: Pens. (line 60) +* hexidecimal: Data types. (line 305) +* hexidecimal <1>: Pens. (line 58) * hidden surface removal: three. (line 588) -* 'histogram': Mathematical functions. +* histogram: Mathematical functions. (line 39) -* 'history': Files. (line 143) -* 'history' <1>: Interactive mode. (line 54) -* 'historylines': Interactive mode. (line 57) -* 'HookHead': draw. (line 26) -* 'HookHead3': three. (line 547) -* 'Horizontal': flowchart. (line 77) -* 'hyperrefOptions': Options. (line 132) -* 'hypot': Mathematical functions. +* history: Files. (line 143) +* history <1>: Interactive mode. (line 54) +* historylines: Interactive mode. (line 57) +* HookHead: draw. (line 26) +* HookHead3: three. (line 547) +* Horizontal: flowchart. (line 77) +* hyperrefOptions: Options. (line 132) +* hypot: Mathematical functions. (line 6) -* 'I': Mathematical functions. +* I: Mathematical functions. (line 48) -* 'iconic': three. (line 195) -* 'identity': Transforms. (line 24) -* 'identity' <1>: Mathematical functions. +* iconic: three. (line 195) +* identity: Transforms. (line 24) +* identity <1>: Mathematical functions. (line 6) -* 'identity' <2>: Arrays. (line 290) -* 'identity4': three. (line 422) -* 'if': Programming. (line 26) -* 'IgnoreAspect': Frames and pictures. +* identity <2>: Arrays. (line 293) +* identity4: three. (line 422) +* if: Programming. (line 26) +* IgnoreAspect: Frames and pictures. (line 63) -* 'image': palette. (line 33) -* 'image' <1>: palette. (line 58) -* 'ImageMagick': Configuring. (line 65) -* 'ImageMagick' <1>: animation. (line 6) -* 'ImageMagick' <2>: Options. (line 146) +* image: palette. (line 33) +* image <1>: palette. (line 58) +* ImageMagick: Configuring. (line 64) +* ImageMagick <1>: animation. (line 6) +* ImageMagick <2>: Options. (line 146) * images: palette. (line 6) * implicit casts: Casts. (line 6) -* 'implicit linear solver': MetaPost. (line 10) +* implicit linear solver: MetaPost. (line 10) * implicit scaling: Implicit scaling. (line 6) -* 'implicitsurface': smoothcontour3. (line 16) -* 'import': Import. (line 45) -* 'inches': Figure size. (line 18) -* 'incircle': Data types. (line 120) -* 'include': Import. (line 126) +* implicitsurface: smoothcontour3. (line 16) +* import: Import. (line 45) +* inches: Figure size. (line 18) +* incircle: Data types. (line 120) +* include: Import. (line 126) * including images: label. (line 78) -* 'increasing': math. (line 59) -* 'inf': Data types. (line 35) +* increasing: math. (line 59) +* inf: Data types. (line 35) * inheritance: Structures. (line 181) -* 'initialized': Arrays. (line 39) +* initialized: Arrays. (line 39) * initializers: Variable initializers. (line 6) -* 'inline': LaTeX usage. (line 50) -* 'InOutTicks': graph3. (line 35) -* 'input': Files. (line 10) -* 'input' <1>: Files. (line 12) -* 'input' <2>: Interactive mode. (line 45) -* 'input' <3>: Interactive mode. (line 49) -* 'insert': Data types. (line 252) -* 'insert' <1>: Arrays. (line 39) -* 'inside': Paths and guides. (line 294) -* 'inside' <1>: Paths and guides. (line 299) -* 'inside' <2>: Paths and guides. (line 305) -* 'insphere': three. (line 510) -* 'inst': Debugger. (line 35) +* inline: LaTeX usage. (line 50) +* InOutTicks: graph3. (line 35) +* input: Files. (line 10) +* input <1>: Files. (line 12) +* input <2>: Interactive mode. (line 45) +* input <3>: Interactive mode. (line 49) +* insert: Data types. (line 252) +* insert <1>: Arrays. (line 39) +* inside: Paths and guides. (line 294) +* inside <1>: Paths and guides. (line 299) +* inside <2>: Paths and guides. (line 305) +* insphere: three. (line 510) +* inst: Debugger. (line 35) * installation: Installation. (line 6) -* 'int': Data types. (line 30) +* int: Data types. (line 30) * integer division: Arithmetic & logical. (line 20) * interactive mode: Drawing in interactive mode. (line 6) * interactive mode <1>: Interactive mode. (line 6) -* 'interior': Paths and guides. (line 290) +* interior: Paths and guides. (line 290) * international characters: unicode. (line 6) -* 'interp': Arithmetic & logical. +* interp: Arithmetic & logical. (line 64) -* 'interpolate': interpolate. (line 6) -* 'intersect': Paths and guides. (line 195) -* 'intersect' <1>: math. (line 13) -* 'intersect' <2>: three. (line 484) -* 'intersectionpoint': Paths and guides. (line 238) -* 'intersectionpoint' <1>: math. (line 17) -* 'intersectionpoint' <2>: three. (line 484) -* 'intersectionpoints': Paths and guides. (line 242) -* 'intersectionpoints' <1>: three. (line 484) -* 'intersectionpoints' <2>: three. (line 497) -* 'intersections': Paths and guides. (line 206) -* 'intersections' <1>: Paths and guides. (line 213) -* 'intersections' <2>: three. (line 484) -* 'intersections' <3>: three. (line 490) -* 'InTicks': graph3. (line 35) -* 'intMax': Data types. (line 30) -* 'intMin': Data types. (line 30) -* 'inverse': Transforms. (line 16) -* 'inverse' <1>: Arrays. (line 296) -* 'invert': three. (line 412) -* 'invisible': Pens. (line 39) -* 'isnan': Data types. (line 35) -* 'i_scaled': Mathematical functions. +* interpolate: interpolate. (line 6) +* intersect: Paths and guides. (line 195) +* intersect <1>: math. (line 13) +* intersect <2>: three. (line 484) +* intersectionpoint: Paths and guides. (line 238) +* intersectionpoint <1>: math. (line 17) +* intersectionpoint <2>: three. (line 484) +* intersectionpoints: Paths and guides. (line 242) +* intersectionpoints <1>: three. (line 484) +* intersectionpoints <2>: three. (line 497) +* intersections: Paths and guides. (line 206) +* intersections <1>: Paths and guides. (line 213) +* intersections <2>: three. (line 484) +* intersections <3>: three. (line 490) +* InTicks: graph3. (line 35) +* intMax: Data types. (line 30) +* intMin: Data types. (line 30) +* inverse: Transforms. (line 16) +* inverse <1>: Arrays. (line 299) +* invert: three. (line 412) +* invisible: Pens. (line 39) +* isnan: Data types. (line 35) +* i_scaled: Mathematical functions. (line 48) -* 'J': Mathematical functions. +* J: Mathematical functions. (line 6) -* 'J' <1>: Mathematical functions. +* J <1>: Mathematical functions. (line 48) * Japanese: unicode. (line 12) -* 'K': Mathematical functions. +* K: Mathematical functions. (line 48) -* 'Kate': Editing modes. (line 48) -* 'KDE editor': Editing modes. (line 48) -* 'keepAspect': Frames and pictures. +* Kate: Editing modes. (line 48) +* KDE editor: Editing modes. (line 48) +* keepAspect: Frames and pictures. (line 59) -* 'keepAspect' <1>: Frames and pictures. +* keepAspect <1>: Frames and pictures. (line 63) -* 'keepAspect' <2>: LaTeX usage. (line 50) +* keepAspect <2>: LaTeX usage. (line 50) * keyboard bindings:: three. (line 173) -* 'keys': Arrays. (line 39) -* 'keyword': Named arguments. (line 37) +* keys: Arrays. (line 39) +* keyword: Named arguments. (line 37) * keyword-only: Named arguments. (line 37) * keywords: Named arguments. (line 6) * Korean: unicode. (line 12) -* 'k_scaled': Mathematical functions. +* k_scaled: Mathematical functions. (line 48) -* 'label': Labels. (line 6) -* 'Label': draw. (line 97) -* 'label' <1>: label. (line 6) -* 'Label' <1>: label. (line 14) -* Label: graph. (line 330) -* 'label' <2>: three. (line 448) -* 'labelpath': labelpath. (line 6) -* 'labelpath3': labelpath3. (line 6) +* label: Labels. (line 6) +* Label: draw. (line 97) +* label <1>: label. (line 6) +* Label <1>: label. (line 14) +* Label <2>: graph. (line 330) +* label <2>: three. (line 448) +* labelpath: labelpath. (line 6) +* labelpath3: labelpath3. (line 6) * labelx: graph. (line 330) * labely: graph. (line 330) -* 'Landscape': Frames and pictures. +* Landscape: Frames and pictures. (line 104) -* 'lastcut': Paths and guides. (line 266) -* 'lasy-mode': Editing modes. (line 6) -* 'latex': Options. (line 146) -* 'LaTeX fonts': Pens. (line 202) -* 'LaTeX' usage: LaTeX usage. (line 6) -* 'latexmk': LaTeX usage. (line 30) -* 'latin1': latin1. (line 6) -* 'latitude': Data types. (line 163) -* 'latticeshade': fill. (line 32) -* 'layer': Drawing commands. (line 16) -* 'leastsquares': stats. (line 6) -* 'leastsquares' <1>: graph. (line 930) -* 'Left': graph. (line 269) -* 'LeftRight': graph. (line 275) -* 'LeftSide': label. (line 60) -* 'LeftTicks': graph. (line 160) -* 'LeftTicks' <1>: graph. (line 233) -* 'LeftView': three. (line 370) +* lastcut: Paths and guides. (line 266) +* lasy-mode: Editing modes. (line 6) +* latex: Options. (line 146) +* LaTeX fonts: Pens. (line 202) +* LaTeX usage: LaTeX usage. (line 6) +* latexmk: LaTeX usage. (line 30) +* latin1: latin1. (line 6) +* latitude: Data types. (line 163) +* latticeshade: fill. (line 32) +* layer: Drawing commands. (line 16) +* leastsquares: stats. (line 6) +* leastsquares <1>: graph. (line 930) +* Left: graph. (line 269) +* LeftRight: graph. (line 275) +* LeftSide: label. (line 60) +* LeftTicks: graph. (line 160) +* LeftTicks <1>: graph. (line 233) +* LeftView: three. (line 370) * legend: Drawing commands. (line 31) -* 'legend': draw. (line 64) -* 'legend' <1>: graph. (line 425) +* legend <1>: draw. (line 64) +* legend <2>: graph. (line 425) * Legendre: Mathematical functions. (line 48) -* 'length': Data types. (line 65) -* 'length' <1>: Data types. (line 144) -* 'length' <2>: Data types. (line 238) -* 'length' <3>: Paths and guides. (line 76) -* 'length' <4>: Paths and guides. (line 373) -* 'length' <5>: Arrays. (line 39) -* 'length' <6>: three. (line 484) -* 'letter': Configuring. (line 59) -* 'lexorder': math. (line 67) -* 'lexorder' <1>: math. (line 70) -* 'libgs': Configuring. (line 65) -* 'libgs' <1>: Options. (line 151) -* 'libm' routines: Mathematical functions. +* length: Data types. (line 65) +* length <1>: Data types. (line 144) +* length <2>: Data types. (line 238) +* length <3>: Paths and guides. (line 76) +* length <4>: Paths and guides. (line 373) +* length <5>: Arrays. (line 39) +* length <6>: three. (line 484) +* letter: Configuring. (line 58) +* lexorder: math. (line 67) +* lexorder <1>: math. (line 70) +* libgs: Configuring. (line 64) +* libgs <1>: Options. (line 151) +* libm routines: Mathematical functions. (line 6) -* 'libsigsegv': Functions. (line 100) -* 'libsigsegv' <1>: Help. (line 27) -* 'limits': graph. (line 640) -* 'line': Arrays. (line 333) -* 'line' <1>: Arrays. (line 337) -* line mode: Arrays. (line 333) -* 'Linear': graph. (line 691) -* 'linecap': Pens. (line 135) -* 'linejoin': Pens. (line 145) -* 'lineskip': Pens. (line 188) -* 'linetype': Pens. (line 119) -* 'linewidth': Pens. (line 123) -* 'locale': Data types. (line 310) -* 'log': Mathematical functions. +* libsigsegv: Functions. (line 100) +* libsigsegv <1>: Help. (line 27) +* limits: graph. (line 640) +* line: Arrays. (line 336) +* line <1>: Arrays. (line 340) +* line mode: Arrays. (line 336) +* Linear: graph. (line 691) +* linecap: Pens. (line 135) +* linejoin: Pens. (line 145) +* lineskip: Pens. (line 188) +* linetype: Pens. (line 119) +* linewidth: Pens. (line 123) +* locale: Data types. (line 315) +* log: Mathematical functions. (line 6) -* 'Log': graph. (line 691) +* Log: graph. (line 691) * log-log graph: graph. (line 725) -* 'log10': Mathematical functions. +* log10: Mathematical functions. (line 6) -* 'log1p': Mathematical functions. +* log1p: Mathematical functions. (line 6) -* 'log2' graph: graph. (line 781) +* log2 graph: graph. (line 781) * logarithmic graph: graph. (line 725) * logical operators: Arithmetic & logical. (line 6) -* 'longdashdotted': Pens. (line 98) -* 'longdashed': Pens. (line 98) -* 'longitude': Data types. (line 168) +* longdashdotted: Pens. (line 98) +* longdashed: Pens. (line 98) +* longitude: Data types. (line 168) * loop: Programming. (line 26) -* 'lualatex': Options. (line 146) -* 'luatex': Options. (line 146) -* 'MacOS X' binary distributions: MacOS X binary distributions. +* lualatex: Options. (line 146) +* luatex: Options. (line 146) +* MacOS X binary distributions: MacOS X binary distributions. (line 6) -* 'makepen': Pens. (line 318) -* 'map': Arrays. (line 131) -* 'Margin': draw. (line 42) -* 'Margin' <1>: draw. (line 42) -* 'Margin3': three. (line 563) -* 'Margin3' <1>: three. (line 563) -* 'Margins': draw. (line 42) +* makepen: Pens. (line 318) +* map: Arrays. (line 131) +* Margin: draw. (line 42) +* Margin <1>: draw. (line 42) +* Margin3: three. (line 563) +* Margin3 <1>: three. (line 563) +* Margins: draw. (line 42) * margins: three. (line 247) -* 'Margins3': three. (line 563) -* 'mark': graph. (line 481) -* 'markangle': markers. (line 35) -* 'marker': graph. (line 481) -* 'markers': markers. (line 6) -* 'marknodes': graph. (line 481) -* 'markuniform': graph. (line 481) -* 'mask': Data types. (line 35) -* 'math': math. (line 6) +* Margins3: three. (line 563) +* mark: graph. (line 481) +* markangle: markers. (line 35) +* marker: graph. (line 481) +* markers: markers. (line 6) +* marknodes: graph. (line 481) +* markuniform: graph. (line 481) +* mask: Data types. (line 35) +* math: math. (line 6) * mathematical functions: Mathematical functions. (line 6) -* 'max': Paths and guides. (line 279) -* 'max' <1>: Frames and pictures. +* max: Paths and guides. (line 279) +* max <1>: Frames and pictures. (line 7) -* 'max' <2>: Arrays. (line 215) -* 'max' <3>: Arrays. (line 225) -* 'max' <4>: three. (line 484) -* 'maxbound': Data types. (line 134) -* 'maxbound' <1>: Data types. (line 204) -* 'maxtile': three. (line 195) -* 'maxtimes': Paths and guides. (line 233) -* 'maxviewport': three. (line 195) -* 'MetaPost': MetaPost. (line 6) -* 'MetaPost ... ': Bezier curves. (line 70) -* 'MetaPost cutafter': Paths and guides. (line 267) -* 'MetaPost cutbefore': Paths and guides. (line 263) -* 'MetaPost pickup': Pens. (line 6) -* 'MetaPost whatever': MetaPost. (line 10) +* max <2>: Arrays. (line 218) +* max <3>: Arrays. (line 228) +* max <4>: three. (line 484) +* maxbound: Data types. (line 134) +* maxbound <1>: Data types. (line 204) +* maxtile: three. (line 195) +* maxtimes: Paths and guides. (line 233) +* maxviewport: three. (line 195) +* MetaPost: MetaPost. (line 6) +* MetaPost ... : Bezier curves. (line 70) +* MetaPost cutafter: Paths and guides. (line 267) +* MetaPost cutbefore: Paths and guides. (line 263) +* MetaPost pickup: Pens. (line 6) +* MetaPost whatever: MetaPost. (line 10) * Microsoft Windows: Microsoft Windows. (line 6) -* 'MidArcArrow': draw. (line 26) -* 'MidArcArrow3': three. (line 547) -* 'MidArrow': draw. (line 26) -* 'MidArrow3': three. (line 547) -* 'MidPoint': label. (line 55) -* 'midpoint': Paths and guides. (line 180) -* 'min': Paths and guides. (line 275) -* 'min' <1>: Frames and pictures. +* MidArcArrow: draw. (line 26) +* MidArcArrow3: three. (line 547) +* MidArrow: draw. (line 26) +* MidArrow3: three. (line 547) +* MidPoint: label. (line 55) +* midpoint: Paths and guides. (line 180) +* min: Paths and guides. (line 275) +* min <1>: Frames and pictures. (line 7) -* 'min' <2>: Arrays. (line 210) -* 'min' <3>: Arrays. (line 220) -* 'min' <4>: three. (line 484) -* 'minbound': Data types. (line 131) -* 'minbound' <1>: Data types. (line 201) -* 'minipage': label. (line 116) -* 'mintimes': Paths and guides. (line 228) -* 'miterjoin': Pens. (line 145) -* 'miterlimit': Pens. (line 155) -* 'mktemp': Files. (line 44) -* 'mm': Figure size. (line 18) -* 'mode': Files. (line 76) -* 'mode' <1>: Files. (line 89) -* 'monotonic': graph. (line 36) +* min <2>: Arrays. (line 213) +* min <3>: Arrays. (line 223) +* min <4>: three. (line 484) +* minbound: Data types. (line 131) +* minbound <1>: Data types. (line 201) +* minipage: label. (line 116) +* mintimes: Paths and guides. (line 228) +* miterjoin: Pens. (line 145) +* miterlimit: Pens. (line 155) +* mktemp: Files. (line 44) +* mm: Figure size. (line 18) +* mode: Files. (line 76) +* mode <1>: Files. (line 89) +* monotonic: graph. (line 36) * mouse: GUI. (line 6) * mouse bindings: three. (line 151) -* 'Move': Pens. (line 355) -* 'MoveQuiet': Pens. (line 361) -* 'multisample': three. (line 142) -* 'N': Labels. (line 18) -* 'name': Files. (line 89) +* Move: Pens. (line 355) +* MoveQuiet: Pens. (line 361) +* multisample: three. (line 142) +* N: Labels. (line 18) +* name: Files. (line 89) * named arguments: Named arguments. (line 6) -* 'nan': Data types. (line 35) -* 'natural': graph. (line 36) -* 'new': Structures. (line 6) -* 'new' <1>: Arrays. (line 100) -* 'new' <2>: Arrays. (line 103) -* 'newframe': Frames and pictures. +* nan: Data types. (line 35) +* natural: graph. (line 36) +* new: Structures. (line 6) +* new <1>: Arrays. (line 100) +* new <2>: Arrays. (line 103) +* newframe: Frames and pictures. (line 7) -* 'newl': Files. (line 61) -* 'newton': Mathematical functions. +* newl: Files. (line 61) +* newton: Mathematical functions. (line 66) -* 'newton' <1>: Mathematical functions. +* newton <1>: Mathematical functions. (line 73) -* 'next': Debugger. (line 41) -* 'NFSS': Pens. (line 202) -* 'nobasealign': Pens. (line 177) -* 'NoFill': draw. (line 26) -* 'NoFill' <1>: Frames and pictures. +* next: Debugger. (line 41) +* NFSS: Pens. (line 202) +* nobasealign: Pens. (line 177) +* NoFill: draw. (line 26) +* NoFill <1>: Frames and pictures. (line 154) -* 'NoMargin': draw. (line 42) -* 'NoMargin3': three. (line 563) -* 'None': draw. (line 19) -* 'None' <1>: draw. (line 26) -* 'none': Files. (line 61) -* 'normal': three. (line 470) -* 'nosafe': Options. (line 170) -* 'NOT': Arithmetic & logical. +* NoMargin: draw. (line 42) +* NoMargin3: three. (line 563) +* None: draw. (line 19) +* None <1>: draw. (line 26) +* none: Files. (line 61) +* normal: three. (line 470) +* nosafe: Options. (line 170) +* NOT: Arithmetic & logical. (line 68) -* 'notaknot': graph. (line 36) -* 'NoTicks': graph. (line 160) -* 'NoTicks3': graph3. (line 35) -* 'null': Structures. (line 6) -* 'nullpen': label. (line 14) -* 'nullpen' <1>: Frames and pictures. +* notaknot: graph. (line 36) +* NoTicks: graph. (line 160) +* NoTicks3: graph3. (line 35) +* null: Structures. (line 6) +* nullpen: label. (line 14) +* nullpen <1>: Frames and pictures. (line 140) -* 'nullpen' <2>: Frames and pictures. +* nullpen <2>: Frames and pictures. (line 149) -* 'NURBS': three. (line 346) -* 'O': three. (line 259) -* 'obj': obj. (line 6) -* 'oblique': three. (line 302) -* 'obliqueX': three. (line 309) -* 'obliqueY': three. (line 315) -* 'obliqueZ': three. (line 302) -* 'ode': ode. (line 6) -* 'offset': Pens. (line 119) -* offset: Options. (line 175) -* 'OmitTick': graph. (line 223) -* 'OmitTickInterval': graph. (line 223) -* 'OmitTickIntervals': graph. (line 223) -* 'opacity': Pens. (line 233) +* NURBS: three. (line 346) +* O: three. (line 259) +* obj: obj. (line 6) +* oblique: three. (line 302) +* obliqueX: three. (line 309) +* obliqueY: three. (line 315) +* obliqueZ: three. (line 302) +* ode: ode. (line 6) +* offset: Pens. (line 119) +* offset <1>: Options. (line 175) +* OmitTick: graph. (line 223) +* OmitTickInterval: graph. (line 223) +* OmitTickIntervals: graph. (line 223) +* opacity: Pens. (line 233) * open: Files. (line 12) -* 'OpenGL': three. (line 142) -* 'operator': User-defined operators. +* OpenGL: three. (line 142) +* operator: User-defined operators. (line 6) -* 'operator --': graph. (line 30) -* 'operator ..': graph. (line 33) -* 'operator answer': Interactive mode. (line 35) -* 'operator cast': Casts. (line 38) -* 'operator ecast': Casts. (line 65) -* 'operator init': Variable initializers. +* operator +(...string[] a).: Data types. (line 283) +* operator --: graph. (line 30) +* operator ..: graph. (line 33) +* operator answer: Interactive mode. (line 35) +* operator cast: Casts. (line 38) +* operator ecast: Casts. (line 65) +* operator init: Variable initializers. (line 6) -* 'operator init' <1>: Structures. (line 134) +* operator init <1>: Structures. (line 134) * operators: Operators. (line 6) * options: Options. (line 6) -* 'OR': Arithmetic & logical. +* OR: Arithmetic & logical. (line 68) -* 'orient': Data types. (line 108) -* 'orient' <1>: three. (line 501) -* 'orientation': Frames and pictures. +* orient: Data types. (line 108) +* orient <1>: three. (line 501) +* orientation: Frames and pictures. (line 104) -* 'orthographic': three. (line 319) -* 'outformat': three. (line 142) -* 'outprefix': Frames and pictures. +* orthographic: three. (line 319) +* outformat: three. (line 142) +* outprefix: Frames and pictures. (line 91) -* 'output': Files. (line 36) -* 'output' <1>: Options. (line 146) -* 'OutTicks': graph3. (line 35) +* output: Files. (line 36) +* output <1>: Options. (line 146) +* OutTicks: graph3. (line 35) * overloading functions: Functions. (line 55) -* 'overwrite': Pens. (line 340) -* 'P': Mathematical functions. +* overwrite: Pens. (line 340) +* P: Mathematical functions. (line 48) -* 'pack': label. (line 100) +* pack: label. (line 100) * packing: Rest arguments. (line 30) -* 'pair': Figure size. (line 6) -* 'pair' <1>: Data types. (line 46) -* 'pairs': Arrays. (line 230) -* 'paperheight': Configuring. (line 59) -* 'papertype': Configuring. (line 59) -* 'paperwidth': Configuring. (line 59) -* 'parallelogram': flowchart. (line 47) +* pair: Figure size. (line 6) +* pair <1>: Data types. (line 46) +* pairs: Arrays. (line 233) +* paperheight: Configuring. (line 58) +* papertype: Configuring. (line 58) +* paperwidth: Configuring. (line 58) +* parallelogram: flowchart. (line 47) * parametric surface: graph3. (line 99) * parametrized curve: graph. (line 640) -* 'partialsum': math. (line 53) -* 'partialsum' <1>: math. (line 56) +* partialsum: math. (line 53) +* partialsum <1>: math. (line 56) * patch-dependent colors: three. (line 79) -* 'path': Paths. (line 6) -* 'path' <1>: Paths and guides. (line 7) -* 'path' <2>: three. (line 42) -* 'path' <3>: flowchart. (line 77) +* path: Paths. (line 6) +* path <1>: Paths and guides. (line 7) +* path <2>: three. (line 42) +* path <3>: flowchart. (line 77) * path markers: graph. (line 481) -* 'path3': three. (line 6) -* 'path3' <1>: three. (line 42) -* 'path[]': Paths. (line 23) +* path3: three. (line 6) +* path3 <1>: three. (line 42) +* path[]: Paths. (line 23) * patterns: Pens. (line 251) -* 'patterns': patterns. (line 6) -* 'PDF': Options. (line 146) -* 'pdflatex': Options. (line 146) -* 'pdfreloadOptions': Options. (line 132) -* 'pdfviewer': Configuring. (line 6) -* 'pdfviewerOptions': Options. (line 132) -* 'pen': Pens. (line 6) -* 'PenMargin': draw. (line 42) -* 'PenMargin2': three. (line 563) -* 'PenMargin3': three. (line 563) -* 'PenMargins': draw. (line 42) -* 'PenMargins2': three. (line 563) -* 'PenMargins3': three. (line 563) -* 'periodic': graph. (line 36) -* 'perl': LaTeX usage. (line 30) -* 'perpendicular': geometry. (line 6) -* 'perspective': three. (line 346) -* 'picture': Frames and pictures. +* patterns <1>: patterns. (line 6) +* PDF: Options. (line 146) +* pdflatex: Options. (line 146) +* pdfreloadOptions: Options. (line 132) +* pdfviewer: Configuring. (line 6) +* pdfviewerOptions: Options. (line 132) +* pen: Pens. (line 6) +* PenMargin: draw. (line 42) +* PenMargin2: three. (line 563) +* PenMargin3: three. (line 563) +* PenMargins: draw. (line 42) +* PenMargins2: three. (line 563) +* PenMargins3: three. (line 563) +* periodic: graph. (line 36) +* perl: LaTeX usage. (line 30) +* perpendicular: geometry. (line 6) +* perspective: three. (line 346) +* picture: Frames and pictures. (line 39) * picture alignment: Frames and pictures. (line 228) -* 'piecewisestraight': Paths and guides. (line 92) -* 'pixel': three. (line 570) -* 'Pl': Mathematical functions. +* piecewisestraight: Paths and guides. (line 92) +* pixel: three. (line 570) +* Pl: Mathematical functions. (line 48) -* 'plain': plain. (line 6) -* 'planar': three. (line 88) -* 'plane': three. (line 285) -* 'planeproject': three. (line 467) -* 'point': Paths and guides. (line 95) -* 'point' <1>: Paths and guides. (line 379) -* 'point' <2>: three. (line 484) -* 'polar': Data types. (line 148) -* 'polargraph': graph. (line 88) -* 'polygon': graph. (line 481) -* 'pop': Arrays. (line 39) -* 'Portrait': Frames and pictures. +* plain: plain. (line 6) +* planar: three. (line 88) +* plane: three. (line 285) +* planeproject: three. (line 467) +* point: Paths and guides. (line 95) +* point <1>: Paths and guides. (line 379) +* point <2>: three. (line 484) +* polar: Data types. (line 148) +* polargraph: graph. (line 88) +* polygon: graph. (line 481) +* pop: Arrays. (line 39) +* Portrait: Frames and pictures. (line 104) -* 'postcontrol': Paths and guides. (line 146) -* 'postcontrol' <1>: three. (line 484) +* postcontrol: Paths and guides. (line 146) +* postcontrol <1>: three. (line 484) * postfix operators: Self & prefix operators. (line 19) -* 'postscript': Frames and pictures. +* postscript: Frames and pictures. (line 294) -* 'PostScript fonts': Pens. (line 220) -* 'PostScript' subpath: Paths. (line 23) -* 'pow10': Mathematical functions. +* PostScript fonts: Pens. (line 220) +* PostScript subpath: Paths. (line 23) +* pow10: Mathematical functions. (line 6) -* 'prc': three. (line 216) -* 'precision': Files. (line 93) -* 'precontrol': Paths and guides. (line 139) -* 'precontrol' <1>: three. (line 484) +* prc: three. (line 216) +* precision: Files. (line 93) +* precontrol: Paths and guides. (line 139) +* precontrol <1>: three. (line 484) * prefix operators: Self & prefix operators. (line 6) -* 'private': Structures. (line 6) +* private: Structures. (line 6) * programming: Programming. (line 6) -* 'pstoedit': PostScript to Asymptote. +* pstoedit: PostScript to Asymptote. (line 6) -* 'psview': Microsoft Windows. (line 16) -* 'psviewer': Configuring. (line 6) -* 'psviewerOptions': Options. (line 132) -* 'pt': Figure size. (line 18) -* 'public': Structures. (line 6) -* 'push': Arrays. (line 39) -* 'Python' usage: Interactive mode. (line 72) -* 'quadraticroots': Arrays. (line 299) -* 'quadraticroots' <1>: Arrays. (line 304) -* 'quarticroots': math. (line 22) +* psviewer: Configuring. (line 6) +* psviewerOptions: Options. (line 132) +* pt: Figure size. (line 18) +* public: Structures. (line 6) +* push: Arrays. (line 39) +* Python usage: Interactive mode. (line 72) +* quadraticroots: Arrays. (line 302) +* quadraticroots <1>: Arrays. (line 307) +* quarticroots: math. (line 22) * quick reference: Description. (line 81) * quit: Drawing in interactive mode. (line 11) -* 'quit': Interactive mode. (line 54) -* 'quit' <1>: Debugger. (line 53) -* 'quote': Import. (line 115) -* 'quotient': Arithmetic & logical. +* quit <1>: Interactive mode. (line 54) +* quit <2>: Debugger. (line 53) +* quote: Import. (line 115) +* quotient: Arithmetic & logical. (line 6) -* 'radialshade': fill. (line 51) -* 'RadialShade': Frames and pictures. +* radialshade: fill. (line 51) +* RadialShade: Frames and pictures. (line 172) -* 'RadialShadeDraw': Frames and pictures. +* RadialShadeDraw: Frames and pictures. (line 176) -* 'radians': Mathematical functions. +* radians: Mathematical functions. (line 17) -* 'radius': Paths and guides. (line 135) -* 'radius' <1>: three. (line 484) -* 'Rainbow': palette. (line 12) -* 'rand': Mathematical functions. +* radius: Paths and guides. (line 135) +* radius <1>: three. (line 484) +* Rainbow: palette. (line 12) +* rand: Mathematical functions. (line 39) -* 'randMax': Mathematical functions. +* randMax: Mathematical functions. (line 39) -* 'read': Arrays. (line 373) +* read: Arrays. (line 376) * reading: Files. (line 12) -* reading string arrays: Arrays. (line 343) -* 'readline': Files. (line 135) -* 'real': Data types. (line 35) -* 'realDigits': Data types. (line 35) -* 'realEpsilon': Data types. (line 35) -* 'realMax': Data types. (line 35) -* 'realMin': Data types. (line 35) -* 'realmult': Data types. (line 100) -* 'rectangle': flowchart. (line 34) +* reading string arrays: Arrays. (line 346) +* readline: Files. (line 135) +* real: Data types. (line 35) +* realDigits: Data types. (line 35) +* realEpsilon: Data types. (line 35) +* realMax: Data types. (line 35) +* realMin: Data types. (line 35) +* realmult: Data types. (line 100) +* rectangle: flowchart. (line 34) * recursion: Functions. (line 100) * reference: Description. (line 81) -* 'reflect': Transforms. (line 42) -* 'Relative': label. (line 50) -* 'Relative' <1>: label. (line 60) -* 'relpoint': Paths and guides. (line 176) -* 'reltime': Paths and guides. (line 172) -* 'remainder': Mathematical functions. +* reflect: Transforms. (line 42) +* Relative: label. (line 50) +* Relative <1>: label. (line 60) +* relpoint: Paths and guides. (line 176) +* reltime: Paths and guides. (line 172) +* remainder: Mathematical functions. (line 6) -* 'rename': Files. (line 152) -* 'render': three. (line 46) -* 'render' <1>: three. (line 142) -* 'render' <2>: Options. (line 146) -* 'replace': Data types. (line 269) -* 'resetdefaultpen': Pens. (line 367) +* rename: Files. (line 152) +* render: three. (line 46) +* render <1>: three. (line 142) +* render <2>: Options. (line 146) +* replace: Data types. (line 269) +* resetdefaultpen: Pens. (line 367) * rest arguments: Rest arguments. (line 6) -* 'restore': Frames and pictures. +* restore: Frames and pictures. (line 288) -* 'restricted': Structures. (line 6) -* 'return': Debugger. (line 47) -* 'reverse': Data types. (line 265) -* 'reverse' <1>: Paths and guides. (line 183) -* 'reverse' <2>: Paths and guides. (line 382) -* 'reverse' <3>: Arrays. (line 136) -* 'reverse' <4>: three. (line 484) +* restricted: Structures. (line 6) +* return: Debugger. (line 47) +* reverse: Data types. (line 265) +* reverse <1>: Paths and guides. (line 183) +* reverse <2>: Paths and guides. (line 382) +* reverse <3>: Arrays. (line 136) +* reverse <4>: three. (line 484) * rewind: Files. (line 93) -* 'rfind': Data types. (line 246) -* 'rgb': Pens. (line 30) -* 'rgb' <1>: Pens. (line 58) +* rfind: Data types. (line 246) +* rgb: Pens. (line 30) +* rgb <1>: Pens. (line 58) * Riemann zeta function: Mathematical functions. (line 48) -* 'Right': graph. (line 272) -* 'RightSide': label. (line 60) -* 'RightTicks': graph. (line 160) -* 'RightTicks' <1>: graph. (line 233) -* 'RightView': three. (line 370) -* 'Rotate': label. (line 36) -* 'rotate': three. (line 438) -* 'Rotate(pair z)': label. (line 39) -* 'round': Mathematical functions. +* Right: graph. (line 272) +* RightSide: label. (line 60) +* RightTicks: graph. (line 160) +* RightTicks <1>: graph. (line 233) +* RightView: three. (line 370) +* Rotate: label. (line 36) +* rotate: three. (line 438) +* Rotate(pair z): label. (line 39) +* round: Mathematical functions. (line 26) -* 'roundcap': Pens. (line 135) -* 'roundedpath': roundedpath. (line 6) -* 'roundjoin': Pens. (line 145) -* 'roundrectangle': flowchart. (line 66) +* roundcap: Pens. (line 135) +* roundedpath: roundedpath. (line 6) +* roundjoin: Pens. (line 145) +* roundrectangle: flowchart. (line 66) * RPM: UNIX binary distributions. (line 6) * runtime imports: Import. (line 97) * Russian: unicode. (line 7) -* 'S': Labels. (line 18) -* 'safe': Options. (line 170) -* 'save': Frames and pictures. +* S: Labels. (line 18) +* safe: Options. (line 170) +* save: Frames and pictures. (line 285) -* 'saveline': Files. (line 135) -* 'Scale': label. (line 45) -* 'scale': Pens. (line 119) -* 'scale' <1>: Transforms. (line 34) -* 'scale' <2>: Transforms. (line 36) -* 'scale' <3>: graph. (line 691) -* 'Scale' <1>: graph. (line 708) -* 'scale' <4>: three. (line 437) -* 'scale3': three. (line 435) +* saveline: Files. (line 135) +* Scale: label. (line 45) +* scale: Pens. (line 119) +* scale <1>: Transforms. (line 34) +* scale <2>: Transforms. (line 36) +* scale <3>: graph. (line 691) +* Scale <1>: graph. (line 708) +* scale <4>: three. (line 437) +* scale3: three. (line 435) * scaled graph: graph. (line 671) * scientific graph: graph. (line 388) -* 'scroll': Files. (line 109) -* 'search': Arrays. (line 154) -* 'search' <1>: Arrays. (line 160) +* scroll: Files. (line 109) +* search: Arrays. (line 157) +* search <1>: Arrays. (line 163) * search paths: Search paths. (line 6) -* 'Seascape': Frames and pictures. +* Seascape: Frames and pictures. (line 110) * secondary axis: graph. (line 834) -* 'secondaryX': graph. (line 834) -* 'secondaryY': graph. (line 834) -* 'seconds': Data types. (line 324) -* 'seek': Files. (line 93) -* 'seekeof': Files. (line 93) -* 'segment': math. (line 50) +* secondaryX: graph. (line 834) +* secondaryY: graph. (line 834) +* seconds: Data types. (line 329) +* seek: Files. (line 93) +* seekeof: Files. (line 93) +* segment: math. (line 50) * segmentation fault: Help. (line 27) * self operators: Self & prefix operators. (line 6) -* 'sequence': Arrays. (line 118) -* 'settings': Configuring. (line 22) -* 'settings' <1>: Options. (line 117) -* 'sgn': Mathematical functions. +* sequence: Arrays. (line 118) +* settings: Configuring. (line 21) +* settings <1>: Options. (line 117) +* sgn: Mathematical functions. (line 26) * shading: fill. (line 32) -* 'Shift': label. (line 33) -* 'shift': Transforms. (line 26) -* 'shift' <1>: Transforms. (line 28) -* 'shift' <2>: Transforms. (line 44) -* 'shift' <3>: three. (line 427) -* 'shiftless': Transforms. (line 44) -* 'shipout': Frames and pictures. +* Shift: label. (line 33) +* shift: Transforms. (line 26) +* shift <1>: Transforms. (line 28) +* shift <2>: Transforms. (line 44) +* shift <3>: three. (line 427) +* shiftless: Transforms. (line 44) +* shipout: Frames and pictures. (line 91) -* 'showtarget': three. (line 319) -* 'Si': Mathematical functions. +* showtarget: three. (line 319) +* Si: Mathematical functions. (line 48) -* 'signedint': Files. (line 76) -* 'signedint' <1>: Files. (line 89) -* 'SimpleHead': draw. (line 26) -* 'simplex': simplex. (line 6) -* 'simpson': Mathematical functions. +* signedint: Files. (line 76) +* signedint <1>: Files. (line 89) +* SimpleHead: draw. (line 26) +* simplex: simplex. (line 6) +* simpson: Mathematical functions. (line 82) -* 'sin': Mathematical functions. +* sin: Mathematical functions. (line 6) -* 'Sin': Mathematical functions. +* Sin: Mathematical functions. (line 20) * single precision: Files. (line 76) -* 'singleint': Files. (line 76) -* 'singleint' <1>: Files. (line 89) -* 'singlereal': Files. (line 76) -* 'singlereal' <1>: Files. (line 89) -* 'sinh': Mathematical functions. +* singleint: Files. (line 76) +* singleint <1>: Files. (line 89) +* singlereal: Files. (line 76) +* singlereal <1>: Files. (line 89) +* sinh: Mathematical functions. (line 6) -* 'SixViews': three. (line 385) -* 'SixViewsFR': three. (line 385) -* 'SixViewsUS': three. (line 385) -* 'size': Figure size. (line 6) -* 'size' <1>: Paths and guides. (line 81) -* 'size' <2>: Paths and guides. (line 370) -* 'size' <3>: Frames and pictures. +* SixViews: three. (line 385) +* SixViewsFR: three. (line 385) +* SixViewsUS: three. (line 385) +* size: Figure size. (line 6) +* size <1>: Paths and guides. (line 81) +* size <2>: Paths and guides. (line 370) +* size <3>: Frames and pictures. (line 48) -* 'size' <4>: Frames and pictures. +* size <4>: Frames and pictures. (line 74) -* 'size' <5>: three. (line 484) -* 'size' <6>: Options. (line 146) -* 'size3': three. (line 244) -* 'Slant': label. (line 42) -* 'slant': Transforms. (line 38) -* 'sleep': Data types. (line 370) -* 'slice': Paths and guides. (line 251) -* 'slice' <1>: Paths and guides. (line 262) +* size <5>: three. (line 484) +* size <6>: Options. (line 146) +* size3: three. (line 244) +* Slant: label. (line 42) +* slant: Transforms. (line 38) +* sleep: Data types. (line 375) +* slice: Paths and guides. (line 251) +* slice <1>: Paths and guides. (line 262) * slices: Slices. (line 6) -* 'slide': slide. (line 6) -* 'slope': math. (line 44) -* 'slope' <1>: math. (line 47) -* 'slopefield': slopefield. (line 6) -* 'smoothcontour3': smoothcontour3. (line 6) -* 'sncndn': Mathematical functions. +* slide: slide. (line 6) +* slope: math. (line 44) +* slope <1>: math. (line 47) +* slopefield: slopefield. (line 6) +* smoothcontour3: smoothcontour3. (line 6) +* sncndn: Mathematical functions. (line 48) -* 'solid': Pens. (line 98) -* 'solids': solids. (line 6) -* 'solve': Arrays. (line 268) -* 'solve' <1>: Arrays. (line 284) -* 'sort': Arrays. (line 174) -* 'sort' <1>: Arrays. (line 178) -* 'sort' <2>: Arrays. (line 193) -* 'Spline': graph. (line 33) -* 'Spline' <1>: graph3. (line 99) -* 'split': Data types. (line 278) -* 'sqrt': Mathematical functions. +* solid: Pens. (line 98) +* solids: solids. (line 6) +* solve: Arrays. (line 271) +* solve <1>: Arrays. (line 287) +* sort: Arrays. (line 177) +* sort <1>: Arrays. (line 181) +* sort <2>: Arrays. (line 196) +* Spline: graph. (line 33) +* Spline <1>: graph3. (line 99) +* split: Data types. (line 278) +* sqrt: Mathematical functions. (line 6) -* 'squarecap': Pens. (line 135) -* 'srand': Mathematical functions. +* squarecap: Pens. (line 135) +* srand: Mathematical functions. (line 39) * stack overflow: Functions. (line 100) * stack overflow <1>: Functions. (line 100) * stack overflow <2>: Help. (line 27) -* 'static': Static. (line 6) -* 'stats': stats. (line 6) -* 'stdin': Files. (line 48) -* 'stdout': Files. (line 48) -* 'step': Debugger. (line 38) -* 'stickframe': markers. (line 16) -* 'stop': Debugger. (line 10) -* 'straight': Paths and guides. (line 88) -* 'Straight': graph. (line 30) -* 'straight' <1>: three. (line 484) -* 'strftime': Data types. (line 315) -* 'strftime' <1>: Data types. (line 340) -* 'string': Data types. (line 207) -* 'string' <1>: Data types. (line 306) -* 'stroke': fill. (line 36) -* 'stroke' <1>: clip. (line 6) -* 'strokepath': Paths and guides. (line 309) -* 'strptime': Data types. (line 324) -* 'struct': Structures. (line 6) +* static: Static. (line 6) +* stats: stats. (line 6) +* stdin: Files. (line 48) +* stdout: Files. (line 48) +* step: Debugger. (line 38) +* stickframe: markers. (line 16) +* stop: Debugger. (line 10) +* straight: Paths and guides. (line 88) +* Straight: graph. (line 30) +* straight <1>: three. (line 484) +* strftime: Data types. (line 320) +* strftime <1>: Data types. (line 345) +* string: Data types. (line 207) +* string <1>: Data types. (line 311) +* stroke: fill. (line 36) +* stroke <1>: clip. (line 6) +* strokepath: Paths and guides. (line 309) +* strptime: Data types. (line 329) +* struct: Structures. (line 6) * structures: Structures. (line 6) -* 'subpath': Paths and guides. (line 186) -* 'subpath' <1>: three. (line 484) +* subpath: Paths and guides. (line 186) +* subpath <1>: three. (line 484) * subpictures: Frames and pictures. (line 113) -* 'substr': Data types. (line 261) -* 'sum': Arrays. (line 205) +* substr: Data types. (line 261) +* sum: Arrays. (line 208) * superpath: Paths. (line 23) -* 'Suppress': Pens. (line 347) -* 'SuppressQuiet': Pens. (line 351) -* 'surface': three. (line 46) -* 'surface' <1>: three. (line 88) -* 'surface' <2>: three. (line 102) -* 'surface' <3>: graph3. (line 99) -* 'SVG': Options. (line 151) -* 'system': Data types. (line 348) -* 'system' <1>: Options. (line 170) -* 'syzygy': syzygy. (line 6) -* 'tab': Files. (line 61) +* Suppress: Pens. (line 347) +* SuppressQuiet: Pens. (line 351) +* surface: three. (line 46) +* surface <1>: three. (line 88) +* surface <2>: three. (line 102) +* surface <3>: graph3. (line 99) +* SVG: Options. (line 151) +* system: Data types. (line 353) +* system <1>: Options. (line 170) +* syzygy: syzygy. (line 6) +* tab: Files. (line 61) * tab completion: Drawing in interactive mode. (line 11) -* 'tan': Mathematical functions. +* tan: Mathematical functions. (line 6) -* 'Tan': Mathematical functions. +* Tan: Mathematical functions. (line 20) -* 'tanh': Mathematical functions. +* tanh: Mathematical functions. (line 6) -* 'target': three. (line 319) -* 'tell': Files. (line 93) -* 'tension': Bezier curves. (line 56) -* 'tension' <1>: three. (line 6) -* 'tensionSpecifier': Paths and guides. (line 402) +* target: three. (line 319) +* tell: Files. (line 93) +* tension: Bezier curves. (line 56) +* tension <1>: three. (line 6) +* tensionSpecifier: Paths and guides. (line 402) * tensor product shading: fill. (line 77) -* 'tensorshade': fill. (line 77) -* 'tessellation': three. (line 114) -* 'tex': Frames and pictures. +* tensorshade: fill. (line 77) +* tessellation: three. (line 114) +* tex: Frames and pictures. (line 302) -* 'tex' <1>: Options. (line 146) -* 'TeX fonts': Pens. (line 211) +* tex <1>: Options. (line 146) +* TeX fonts: Pens. (line 211) * TeX string: Data types. (line 207) -* 'texcommand': Configuring. (line 65) -* 'TeXHead': draw. (line 26) -* 'TeXHead3': three. (line 547) -* 'texpath': Configuring. (line 65) -* 'texpath' <1>: label. (line 113) -* 'texpreamble': Frames and pictures. +* texcommand: Configuring. (line 64) +* TeXHead: draw. (line 26) +* TeXHead3: three. (line 547) +* texpath: Configuring. (line 64) +* texpath <1>: label. (line 113) +* texpreamble: Frames and pictures. (line 311) -* 'texreset': Frames and pictures. +* texreset: Frames and pictures. (line 315) * textbook graph: graph. (line 360) -* 'tgz': UNIX binary distributions. +* tgz: UNIX binary distributions. (line 6) -* 'thick': three. (line 125) -* 'thin': three. (line 125) -* 'this': Structures. (line 6) -* 'three': three. (line 6) -* 'ThreeViews': three. (line 385) -* 'ThreeViewsFR': three. (line 385) -* 'ThreeViewsUS': three. (line 385) +* thick: three. (line 125) +* thin: three. (line 125) +* this: Structures. (line 6) +* three: three. (line 6) +* ThreeViews: three. (line 385) +* ThreeViewsFR: three. (line 385) +* ThreeViewsUS: three. (line 385) * tick: graph. (line 330) -* 'ticks': graph. (line 160) -* 'Ticks': graph. (line 160) -* 'Ticks' <1>: graph. (line 233) -* 'tildeframe': markers. (line 24) +* ticks: graph. (line 160) +* Ticks: graph. (line 160) +* Ticks <1>: graph. (line 233) +* tildeframe: markers. (line 24) * tile: Pens. (line 265) * tilings: Pens. (line 251) -* 'time': Data types. (line 315) -* 'time' <1>: Data types. (line 340) -* 'time' <2>: math. (line 30) -* 'time' <3>: math. (line 34) -* 'times': Paths and guides. (line 220) -* 'times' <1>: Paths and guides. (line 224) -* 'Top': graph. (line 135) -* 'TopView': three. (line 370) -* 'trace': Debugger. (line 50) -* 'trailingzero': graph. (line 175) -* 'transform': Transforms. (line 6) -* 'transform' <1>: three. (line 459) -* 'transform3': three. (line 422) +* time: Data types. (line 320) +* time <1>: Data types. (line 345) +* time <2>: math. (line 30) +* time <3>: math. (line 34) +* times: Paths and guides. (line 220) +* times <1>: Paths and guides. (line 224) +* Top: graph. (line 135) +* TopView: three. (line 370) +* trace: Debugger. (line 50) +* trailingzero: graph. (line 175) +* transform: Transforms. (line 6) +* transform <1>: three. (line 459) +* transform3: three. (line 422) * transparency: Pens. (line 233) -* 'transpose': Arrays. (line 197) -* 'transpose' <1>: Arrays. (line 200) -* 'tree': tree. (line 6) -* 'trembling': trembling. (line 6) -* 'triangle': geometry. (line 6) -* 'triangles': three. (line 114) -* 'triangulate': contour. (line 149) -* 'tridiagonal': Arrays. (line 255) +* transpose: Arrays. (line 200) +* transpose <1>: Arrays. (line 203) +* tree: tree. (line 6) +* trembling: trembling. (line 6) +* triangle: geometry. (line 6) +* triangles: three. (line 114) +* triangulate: contour. (line 149) +* tridiagonal: Arrays. (line 258) * trigonometric integrals: Mathematical functions. (line 48) -* 'triple': Data types. (line 137) -* 'TrueMargin': draw. (line 42) -* 'TrueMargin3': three. (line 563) -* 'tube': three. (line 125) -* 'tube' <1>: tube. (line 6) +* triple: Data types. (line 137) +* TrueMargin: draw. (line 42) +* TrueMargin3: three. (line 563) +* tube: three. (line 125) +* tube <1>: tube. (line 6) * tutorial: Tutorial. (line 6) -* 'type1cm': Pens. (line 188) -* 'typedef': Data types. (line 379) -* 'typedef' <1>: Functions. (line 46) -* 'U3D': embed. (line 22) -* 'undefined': Paths and guides. (line 283) -* 'UnFill': draw. (line 26) +* type1cm: Pens. (line 188) +* typedef: Data types. (line 384) +* typedef <1>: Functions. (line 46) +* U3D: embed. (line 22) +* undefined: Paths and guides. (line 283) +* UnFill: draw. (line 26) * unfill: fill. (line 109) -* 'UnFill' <1>: Frames and pictures. +* UnFill <1>: Frames and pictures. (line 165) -* 'UnFill' <2>: Frames and pictures. +* UnFill <2>: Frames and pictures. (line 168) -* 'unicode': unicode. (line 6) -* 'uniform': Arrays. (line 145) +* unicode: unicode. (line 6) +* uniform: Arrays. (line 145) * uninstall: Uninstall. (line 6) -* 'unique': math. (line 63) -* 'unit': Data types. (line 83) -* 'unit' <1>: Data types. (line 173) -* 'unitbox': Paths. (line 44) -* 'unitbox' <1>: three. (line 291) -* 'unitcircle': Paths. (line 17) -* 'unitcircle' <1>: Paths. (line 17) -* 'unitcircle' <2>: three. (line 259) -* 'unitrand': Mathematical functions. +* unique: math. (line 63) +* unit: Data types. (line 83) +* unit <1>: Data types. (line 173) +* unitbox: Paths. (line 44) +* unitbox <1>: three. (line 291) +* unitcircle: Paths. (line 17) +* unitcircle <1>: Paths. (line 17) +* unitcircle <2>: three. (line 259) +* unitrand: Mathematical functions. (line 39) -* 'unitsize': Figure size. (line 39) -* 'unitsize' <1>: Frames and pictures. +* unitsize: Figure size. (line 39) +* unitsize <1>: Frames and pictures. (line 69) * UNIX binary distributions: UNIX binary distributions. (line 6) * unpacking: Rest arguments. (line 39) -* 'unravel': Import. (line 29) -* 'up': three. (line 319) -* 'update': Files. (line 36) -* 'UpsideDown': Frames and pictures. +* unravel: Import. (line 29) +* up: three. (line 319) +* update: Files. (line 36) +* UpsideDown: Frames and pictures. (line 104) -* 'UpsideDown' <1>: Frames and pictures. +* UpsideDown <1>: Frames and pictures. (line 110) -* 'usepackage': Frames and pictures. +* usepackage: Frames and pictures. (line 318) * user coordinates: Figure size. (line 39) * user-defined operators: User-defined operators. (line 6) -* 'usleep': Data types. (line 373) -* 'value': math. (line 38) -* 'value' <1>: math. (line 41) -* 'var': Variable initializers. +* usleep: Data types. (line 378) +* value: math. (line 38) +* value <1>: math. (line 41) +* var: Variable initializers. (line 55) * variable initializers: Variable initializers. (line 6) -* 'vectorfield': graph. (line 1005) -* 'vectorfield' <1>: graph. (line 1044) -* 'vectorfield3': graph3. (line 157) -* vectorization: Arrays. (line 312) +* vectorfield: graph. (line 1005) +* vectorfield <1>: graph. (line 1044) +* vectorfield3: graph3. (line 157) +* vectorization: Arrays. (line 315) * verbatim: Frames and pictures. (line 294) * vertex-dependent colors: three. (line 79) -* 'Vertical': flowchart. (line 77) -* 'viewportheight': LaTeX usage. (line 50) -* 'viewportmargin': three. (line 247) -* 'viewportsize': three. (line 247) -* 'viewportwidth': LaTeX usage. (line 50) -* 'views': three. (line 216) -* 'vim': Editing modes. (line 32) +* Vertical: flowchart. (line 77) +* viewportheight: LaTeX usage. (line 50) +* viewportmargin: three. (line 247) +* viewportsize: three. (line 247) +* viewportwidth: LaTeX usage. (line 50) +* views: three. (line 216) +* vim: Editing modes. (line 32) * virtual functions: Structures. (line 181) -* 'void': Data types. (line 10) -* 'W': Labels. (line 18) -* 'whatever': Paths and guides. (line 246) -* 'Wheel': palette. (line 22) +* void: Data types. (line 10) +* W: Labels. (line 18) +* whatever: Paths and guides. (line 246) +* Wheel: palette. (line 22) * wheel mouse: GUI. (line 6) -* 'while': Programming. (line 48) -* white-space string delimiter mode: Arrays. (line 343) -* 'width': LaTeX usage. (line 50) -* 'windingnumber': Paths and guides. (line 283) -* 'word': Arrays. (line 343) -* 'write': Files. (line 53) -* 'write' <1>: Arrays. (line 382) -* 'X': three. (line 259) -* 'xasy': GUI. (line 6) -* 'xaxis3': graph3. (line 7) -* 'xdr': Files. (line 76) -* 'xelatex': Options. (line 146) -* 'XEquals': graph. (line 265) -* 'xequals': graph. (line 278) -* 'xlimits': graph. (line 640) -* 'XOR': Arithmetic & logical. +* while: Programming. (line 48) +* white-space string delimiter mode: Arrays. (line 346) +* width: LaTeX usage. (line 50) +* windingnumber: Paths and guides. (line 283) +* word: Arrays. (line 346) +* write: Files. (line 53) +* write <1>: Arrays. (line 385) +* X: three. (line 259) +* xasy: GUI. (line 6) +* xaxis3: graph3. (line 7) +* xdr: Files. (line 76) +* xelatex: Options. (line 146) +* XEquals: graph. (line 265) +* xequals: graph. (line 278) +* xlimits: graph. (line 640) +* XOR: Arithmetic & logical. (line 68) -* 'xpart': Data types. (line 94) -* 'xpart' <1>: Data types. (line 184) -* 'xscale': Transforms. (line 30) -* 'xscale3': three. (line 429) +* xpart: Data types. (line 94) +* xpart <1>: Data types. (line 184) +* xscale: Transforms. (line 30) +* xscale3: three. (line 429) * xtick: graph. (line 330) -* 'XY': three. (line 444) -* 'XY' <1>: three. (line 459) -* 'XYEquals': graph3. (line 21) -* 'XYZero': graph3. (line 21) -* 'XZEquals': graph3. (line 21) -* 'XZero': graph. (line 260) -* 'XZZero': graph3. (line 21) -* 'Y': Mathematical functions. +* XY: three. (line 444) +* XY <1>: three. (line 459) +* XYEquals: graph3. (line 21) +* XYZero: graph3. (line 21) +* XZEquals: graph3. (line 21) +* XZero: graph. (line 260) +* XZZero: graph3. (line 21) +* Y: Mathematical functions. (line 6) -* 'Y' <1>: Mathematical functions. +* Y <1>: Mathematical functions. (line 48) -* 'Y' <2>: three. (line 259) -* 'yaxis3': graph3. (line 7) -* 'YEquals': graph. (line 128) -* 'yequals': graph. (line 278) -* 'ylimits': graph. (line 640) -* 'ypart': Data types. (line 97) -* 'ypart' <1>: Data types. (line 187) -* 'yscale': Transforms. (line 32) -* 'yscale3': three. (line 431) +* Y <2>: three. (line 259) +* yaxis3: graph3. (line 7) +* YEquals: graph. (line 128) +* yequals: graph. (line 278) +* ylimits: graph. (line 640) +* ypart: Data types. (line 97) +* ypart <1>: Data types. (line 187) +* yscale: Transforms. (line 32) +* yscale3: three. (line 431) * ytick: graph. (line 330) -* 'YX': three. (line 459) -* 'YZ': three. (line 459) -* 'YZEquals': graph3. (line 21) -* 'YZero': graph. (line 123) -* 'YZZero': graph3. (line 21) -* 'Z': three. (line 259) -* 'zaxis3': graph3. (line 7) -* 'zerowinding': Pens. (line 160) -* 'zero_Ai': Mathematical functions. +* YX: three. (line 459) +* YZ: three. (line 459) +* YZEquals: graph3. (line 21) +* YZero: graph. (line 123) +* YZZero: graph3. (line 21) +* Z: three. (line 259) +* zaxis3: graph3. (line 7) +* zerowinding: Pens. (line 160) +* zero_Ai: Mathematical functions. (line 48) -* 'zero_Ai_deriv': Mathematical functions. +* zero_Ai_deriv: Mathematical functions. (line 48) -* 'zero_Bi': Mathematical functions. +* zero_Bi: Mathematical functions. (line 48) -* 'zero_Bi_deriv': Mathematical functions. +* zero_Bi_deriv: Mathematical functions. (line 48) -* 'zero_J': Mathematical functions. +* zero_J: Mathematical functions. (line 48) -* 'zeta': Mathematical functions. +* zeta: Mathematical functions. (line 48) -* 'zpart': Data types. (line 190) -* 'zscale3': three. (line 433) -* 'ZX': three. (line 459) -* 'ZX' <1>: three. (line 459) -* 'ZY': three. (line 459) +* zpart: Data types. (line 190) +* zscale3: three. (line 433) +* ZX: three. (line 459) +* ZX <1>: three. (line 459) +* ZY: three. (line 459) @@ -10099,146 +10101,145 @@ Node: Installation11100 Node: UNIX binary distributions12144 Node: MacOS X binary distributions13270 Node: Microsoft Windows13824 -Ref: psview14549 -Node: Configuring15485 -Node: Search paths19720 -Node: Compiling from UNIX source20559 -Node: Editing modes23593 -Node: Git26014 -Node: Uninstall26413 -Node: Tutorial26755 -Node: Drawing in batch mode27643 -Node: Drawing in interactive mode28518 -Node: Figure size29550 -Node: Labels31142 -Node: Paths31969 -Ref: unitcircle32584 -Node: Drawing commands34484 -Node: draw36199 -Ref: arrows37381 -Node: fill42629 -Ref: gradient shading43675 -Node: clip48191 -Node: label48787 -Ref: Label49387 -Node: Bezier curves55231 -Node: Programming59128 -Ref: array iteration60881 -Node: Data types61048 -Ref: format71498 -Node: Paths and guides75917 -Ref: circle76171 -Ref: extension85853 -Node: Pens92632 -Ref: fillrule100139 -Ref: basealign101043 -Ref: transparency103877 -Ref: makepen107422 -Ref: overwrite108300 -Node: Transforms109514 -Node: Frames and pictures111296 -Ref: envelope112454 -Ref: size113547 -Ref: unitsize114534 -Ref: shipout115607 -Ref: filltype117958 -Ref: add121130 -Ref: add about122136 -Ref: tex125140 -Node: Files126035 -Ref: cd127022 -Ref: scroll131707 -Node: Variable initializers134625 -Node: Structures137342 -Node: Operators144839 -Node: Arithmetic & logical145153 -Node: Self & prefix operators147393 -Node: User-defined operators148187 -Node: Implicit scaling149097 -Node: Functions149660 -Ref: stack overflow152728 -Node: Default arguments153010 -Node: Named arguments153766 -Node: Rest arguments156336 -Node: Mathematical functions159457 -Node: Arrays164120 -Ref: sort171102 -Ref: tridiagonal173531 -Ref: solve174762 -Node: Slices178901 -Node: Casts182809 -Node: Import185076 -Node: Static190323 -Node: LaTeX usage193216 -Node: Base modules199721 -Node: plain202278 -Node: simplex202952 -Node: math203226 -Node: interpolate205935 -Node: geometry206214 -Node: trembling206808 -Node: stats207077 -Node: patterns207337 -Node: markers207573 -Node: tree209433 -Node: binarytree209618 -Node: drawtree210284 -Node: syzygy210485 -Node: feynman210759 -Node: roundedpath211034 -Node: animation211317 -Ref: animate211738 -Node: embed212855 -Node: slide213810 -Node: MetaPost214151 -Node: unicode214870 -Node: latin1215744 -Node: babel216113 -Node: labelpath216343 -Node: labelpath3217164 -Node: annotate217475 -Node: CAD217945 -Node: graph218256 -Ref: ticks225406 -Ref: pathmarkers239038 -Ref: marker239508 -Ref: markuniform239862 -Ref: errorbars241660 -Ref: automatic scaling245944 -Node: palette257220 -Ref: images257338 -Ref: image261512 -Ref: logimage262032 -Ref: penimage263137 -Ref: penfunctionimage263399 -Node: three264170 -Ref: PostScript3D291179 -Node: obj292918 -Node: graph3293167 -Ref: GaussianSurface298446 -Node: grid3299595 -Node: solids300379 -Node: tube301371 -Node: flowchart303605 -Node: contour308213 -Node: contour3313524 -Node: smoothcontour3313837 -Node: slopefield315556 -Node: ode317044 -Node: Options317301 -Ref: configuration file323464 -Ref: settings323464 -Ref: texengines324707 -Ref: convert324707 -Node: Interactive mode328030 -Ref: history330179 -Node: GUI331483 -Node: GUI installation332034 -Node: GUI usage332945 -Node: PostScript to Asymptote333853 -Node: Help334611 -Node: Debugger336265 -Node: Credits338021 -Node: Index339003 +Node: Configuring15028 +Node: Search paths19174 +Node: Compiling from UNIX source20013 +Node: Editing modes23047 +Node: Git25468 +Node: Uninstall25867 +Node: Tutorial26209 +Node: Drawing in batch mode27097 +Node: Drawing in interactive mode27972 +Node: Figure size29004 +Node: Labels30596 +Node: Paths31423 +Ref: unitcircle32038 +Node: Drawing commands33938 +Node: draw35653 +Ref: arrows36835 +Node: fill42084 +Ref: gradient shading43130 +Node: clip47646 +Node: label48242 +Ref: Label48842 +Node: Bezier curves54687 +Node: Programming58584 +Ref: array iteration60337 +Node: Data types60504 +Ref: format71166 +Node: Paths and guides75612 +Ref: circle75866 +Ref: extension85573 +Node: Pens92382 +Ref: fillrule99889 +Ref: basealign100793 +Ref: transparency103627 +Ref: makepen107207 +Ref: overwrite108090 +Node: Transforms109304 +Node: Frames and pictures111086 +Ref: envelope112244 +Ref: size113337 +Ref: unitsize114324 +Ref: shipout115397 +Ref: filltype117748 +Ref: add120920 +Ref: add about121926 +Ref: tex124955 +Node: Files125851 +Ref: cd126838 +Ref: scroll131523 +Node: Variable initializers134441 +Node: Structures137158 +Node: Operators144660 +Node: Arithmetic & logical144974 +Node: Self & prefix operators147345 +Node: User-defined operators148139 +Node: Implicit scaling149052 +Node: Functions149615 +Ref: stack overflow152758 +Node: Default arguments153040 +Node: Named arguments153796 +Node: Rest arguments156366 +Node: Mathematical functions159488 +Node: Arrays164151 +Ref: sort171259 +Ref: tridiagonal173688 +Ref: solve174919 +Node: Slices179058 +Node: Casts182966 +Node: Import185233 +Node: Static190491 +Node: LaTeX usage193384 +Node: Base modules199901 +Node: plain202458 +Node: simplex203132 +Node: math203406 +Node: interpolate206115 +Node: geometry206394 +Node: trembling206988 +Node: stats207257 +Node: patterns207517 +Node: markers207753 +Node: tree209613 +Node: binarytree209798 +Node: drawtree210464 +Node: syzygy210665 +Node: feynman210939 +Node: roundedpath211214 +Node: animation211497 +Ref: animate211918 +Node: embed213035 +Node: slide213990 +Node: MetaPost214331 +Node: unicode215050 +Node: latin1215924 +Node: babel216293 +Node: labelpath216523 +Node: labelpath3217344 +Node: annotate217655 +Node: CAD218125 +Node: graph218436 +Ref: ticks225597 +Ref: pathmarkers239389 +Ref: marker239860 +Ref: markuniform240214 +Ref: errorbars242022 +Ref: automatic scaling246496 +Node: palette258243 +Ref: images258361 +Ref: image262535 +Ref: logimage263055 +Ref: penimage264160 +Ref: penfunctionimage264422 +Node: three265193 +Ref: PostScript3D292204 +Node: obj293943 +Node: graph3294192 +Ref: GaussianSurface299472 +Node: grid3300621 +Node: solids301405 +Node: tube302397 +Node: flowchart304631 +Node: contour309239 +Node: contour3314554 +Node: smoothcontour3314867 +Node: slopefield316588 +Node: ode318077 +Node: Options318334 +Ref: configuration file324498 +Ref: settings324498 +Ref: texengines325741 +Ref: convert325741 +Node: Interactive mode329065 +Ref: history331215 +Node: GUI332519 +Node: GUI installation333070 +Node: GUI usage333981 +Node: PostScript to Asymptote334889 +Node: Help335647 +Node: Debugger337301 +Node: Credits339057 +Node: Index340039 End Tag Table diff --git a/Build/source/utils/asymptote/drawelement.h b/Build/source/utils/asymptote/drawelement.h index cddf625b53d..e171dc9b18f 100644 --- a/Build/source/utils/asymptote/drawelement.h +++ b/Build/source/utils/asymptote/drawelement.h @@ -22,8 +22,10 @@ namespace camp { -extern double T[3]; // z-component of current transform - +//extern double Tx[3]; // x-component of current transform +//extern double Ty[3]; // y-component of current transform +extern double Tz[3]; // z-component of current transform + static const double pixel=1.0; // Adaptive rendering constant. // Return one-sixth of the second derivative of the Bezier curve defined diff --git a/Build/source/utils/asymptote/drawsurface.cc b/Build/source/utils/asymptote/drawsurface.cc index 60388dd27dd..ac82cfc9a5e 100644 --- a/Build/source/utils/asymptote/drawsurface.cc +++ b/Build/source/utils/asymptote/drawsurface.cc @@ -17,7 +17,9 @@ namespace camp { const triple drawElement::zero; -double T[3]; // z-component of current transform +//double Tx[3]; // x-component of current transform +//double Ty[3]; // y-component of current transform +double Tz[3]; // z-component of current transform using vm::array; @@ -65,7 +67,7 @@ void setcolors(bool colors, bool lighton, if(!colors && (diffuse != lastdiffuse || ambient != lastambient || emissive != lastemissive || specular != lastspecular || shininess != lastshininess)) { - drawBezierPatch::S.draw(); + drawBezierPatch::S.draw(); lastdiffuse=diffuse; lastambient=ambient; lastemissive=emissive; @@ -278,9 +280,20 @@ void drawBezierPatch::render(GLUnurbs *nurb, double size2, glGetDoublev(GL_MODELVIEW_MATRIX,t); // Like Fortran, OpenGL uses transposed (column-major) format! run::transpose(t,4); - T[0]=t[8]; - T[1]=t[9]; - T[2]=t[10]; +/* + Tx[0]=t[0]; + Tx[1]=t[1]; + Tx[2]=t[2]; + + Ty[0]=t[4]; + Ty[1]=t[5]; + Ty[2]=t[6]; +*/ + + Tz[0]=t[8]; + Tz[1]=t[9]; + Tz[2]=t[10]; + run::inverse(t,4); bbox3 box(m,M); box.transform(t); @@ -505,9 +518,20 @@ void drawBezierTriangle::render(GLUnurbs *nurb, double size2, glGetDoublev(GL_MODELVIEW_MATRIX,t); // Like Fortran, OpenGL uses transposed (column-major) format! run::transpose(t,4); - T[0]=t[8]; - T[1]=t[9]; - T[2]=t[10]; +/* + Tx[0]=t[0]; + Tx[1]=t[1]; + Tx[2]=t[2]; + + Ty[0]=t[4]; + Ty[1]=t[5]; + Ty[2]=t[6]; +*/ + + Tz[0]=t[8]; + Tz[1]=t[9]; + Tz[2]=t[10]; + run::inverse(t,4); bbox3 box(m,M); box.transform(t); diff --git a/Build/source/utils/asymptote/examples/linearregression.asy b/Build/source/utils/asymptote/examples/linearregression.asy new file mode 100644 index 00000000000..a1cc6ff6bcb --- /dev/null +++ b/Build/source/utils/asymptote/examples/linearregression.asy @@ -0,0 +1,64 @@ +import graph3; +import math; // for the leastsquares routine + +Billboard.targetsize = true; // Perspective should not affect the labels. +currentprojection = perspective(60 * (5, 2, 3)); + +file duncan = input("linearregression.dat"); + +string headers = duncan; + +real[][] independentvars; +real[] dependentvars; + +while (!eof(duncan)) { + string line = duncan; + string[] entries = split(line); + if (entries.length < 5) continue; + string type = entries[1]; + real income = (real)(entries[2]); + real education = (real)(entries[3]); + real prestige = (real)(entries[4]); + + // include 1.0 for the residue + independentvars.push(new real[] {income, education, 1.0}); + dependentvars.push(prestige); +} + +real[] coeffs = leastsquares(independentvars, dependentvars, warn=false); +if (coeffs.length == 0) { + abort("Unable to find regression: independent variables are " + + "linearly dependent."); +} + +real f(pair xy) { + return coeffs[0] * xy.x // income + + coeffs[1] * xy.y // education + + coeffs[2]; // residue +} + +real xmin = infinity, xmax = -infinity, ymin = infinity, ymax = -infinity; +for (real[] row : independentvars) { + if (row[0] < xmin) xmin = row[0]; + if (row[0] > xmax) xmax = row[0]; + if (row[1] < ymin) ymin = row[1]; + if (row[1] > ymax) ymax = row[1]; +} + +// Draw the plane +draw(surface(f, (xmin, ymin), (xmax, ymax)), + surfacepen=emissive(blue + opacity(0.6)), + meshpen = blue); + +for (int ii = 0; ii < independentvars.length; ++ii) { + triple pt = (independentvars[ii][0], independentvars[ii][1], + dependentvars[ii]); + draw(shift(pt) * unitsphere, material(yellow, emissivepen=0.2*yellow)); + real z = f((pt.x, pt.y)); + if (pt.z > z) draw (pt -- (pt.x, pt.y, z), green); + else draw(pt -- (pt.x, pt.y, z), red); +} + +xaxis3("income", Bounds(Min, Min), InTicks); +yaxis3("education", Bounds(Min, Min), InTicks); +zaxis3("prestige", Bounds(Min, Min), InTicks); diff --git a/Build/source/utils/asymptote/examples/venn.asy b/Build/source/utils/asymptote/examples/venn.asy index f56440ba0a4..33100a72e87 100644 --- a/Build/source/utils/asymptote/examples/venn.asy +++ b/Build/source/utils/asymptote/examples/venn.asy @@ -34,4 +34,3 @@ draw(z--z1,Arrow,Margin(0,m)); draw(z--z2,Arrow,Margin(0,m)); shipout(bbox(0.25cm)); -currentpicture.uptodate=true; diff --git a/Build/source/utils/asymptote/exp.cc b/Build/source/utils/asymptote/exp.cc index 7cda91a6a6d..673f3670a3d 100644 --- a/Build/source/utils/asymptote/exp.cc +++ b/Build/source/utils/asymptote/exp.cc @@ -39,8 +39,9 @@ void exp::prettyprint(ostream &out, Int indent) #endif void exp::transAsType(coenv &e, types::ty *target) { - types::ty *t=trans(e); - assert(t->kind==ty_error || equivalent(t,target)); + trans(e); +// types::ty *t=trans(e); +// assert(t->kind==ty_error || equivalent(t,target)); } void exp::transToType(coenv &e, types::ty *target) diff --git a/Build/source/utils/asymptote/fileio.cc b/Build/source/utils/asymptote/fileio.cc index 061dadbb739..d738438820e 100644 --- a/Build/source/utils/asymptote/fileio.cc +++ b/Build/source/utils/asymptote/fileio.cc @@ -145,8 +145,11 @@ void ifile::Read(string& val) } } } - size_t pos=s.length()-1; - if(s[pos] == '\r') s.erase(pos,1); + size_t n=s.length(); + if(n > 0) { + size_t pos=n-1; + if(s[pos] == '\r') s.erase(pos,1); + } val=whitespace+s; } diff --git a/Build/source/utils/asymptote/fpu.h b/Build/source/utils/asymptote/fpu.h index ca42c60feb7..7a45c7d8773 100644 --- a/Build/source/utils/asymptote/fpu.h +++ b/Build/source/utils/asymptote/fpu.h @@ -1,11 +1,7 @@ #ifndef FPU_H #define FPU_H -#ifdef HAVE_FENV_H -#ifdef _GNU_SOURCE -#define HAVE_FEENABLEEXCEPT -#endif -#endif +#include "common.h" #ifdef HAVE_FEENABLEEXCEPT #include <fenv.h> diff --git a/Build/source/utils/asymptote/gc-7.6.0.tar.gz b/Build/source/utils/asymptote/gc-7.6.0.tar.gz Binary files differdeleted file mode 100644 index e795468e8e8..00000000000 --- a/Build/source/utils/asymptote/gc-7.6.0.tar.gz +++ /dev/null diff --git a/Build/source/utils/asymptote/gc-7.6.2.tar.gz b/Build/source/utils/asymptote/gc-7.6.2.tar.gz Binary files differnew file mode 100644 index 00000000000..a514c7f99d0 --- /dev/null +++ b/Build/source/utils/asymptote/gc-7.6.2.tar.gz diff --git a/Build/source/utils/asymptote/glrender.cc b/Build/source/utils/asymptote/glrender.cc index bbecb1315c6..7698798e951 100644 --- a/Build/source/utils/asymptote/glrender.cc +++ b/Build/source/utils/asymptote/glrender.cc @@ -4,6 +4,8 @@ * Render 3D Bezier paths and surfaces. *****/ +#define _POSIX_C_SOURCE 200809L + #include <stdlib.h> #include <fstream> #include <cstring> @@ -1442,12 +1444,12 @@ void glrender(const string& prefix, const picture *pic, const string& format, osmesa_initialized=true; init_osmesa(); } - } else { - if(glinitialize) { - glinitialize=false; - init(); - Fitscreen=1; - } + } + + if(glinitialize) { + glinitialize=false; + init(); + Fitscreen=1; } static bool initialized=false; diff --git a/Build/source/utils/asymptote/install-sh b/Build/source/utils/asymptote/install-sh index 8175c640fe6..6781b987bdb 100755 --- a/Build/source/utils/asymptote/install-sh +++ b/Build/source/utils/asymptote/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2018-03-11.20; # UTC +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,21 +35,25 @@ scriptversion=2018-03-11.20; # UTC # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it +# `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. -tab=' ' nl=' ' -IFS=" $tab$nl" +IFS=" "" $nl" -# Set DOITPROG to "echo" to test this script. +# set DOITPROG to echo to test this script +# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -doit_exec=${doit:-exec} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -64,6 +68,17 @@ mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + posix_mkdir= # Desired mode of installed file. @@ -82,7 +97,7 @@ dir_arg= dst_arg= copy_on_change=false -is_target_a_directory=possibly +no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -122,57 +137,42 @@ while test $# -ne 0; do -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) dst_arg=$2 + shift;; - -T) is_target_a_directory=never;; + -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -186,10 +186,6 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then fi shift # arg dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac done fi @@ -198,26 +194,13 @@ if test $# -eq 0; then echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call 'install-sh -d' without argument. + # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 + trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,16 +211,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -245,9 +228,9 @@ fi for src do - # Protect names problematic for 'test' and other utilities. + # Protect names starting with `-'. case $src in - -* | [=\(\)!]) src=./$src;; + -*) src=./$src;; esac if test -n "$dir_arg"; then @@ -269,115 +252,129 @@ do echo "$0: no destination specified." >&2 exit 1 fi + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac - # If destination is a directory, append the input filename. + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst - dstbase=`basename "$src"` - case $dst in - */) dst=$dst$dstbase;; - *) dst=$dst/$dstbase;; - esac + dst=$dstdir/`basename "$src"` dstdir_status=0 else - dstdir=`dirname "$dst"` + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + test -d "$dstdir" dstdir_status=$? fi fi - case $dstdir in - */) dstdirslash=$dstdir;; - *) dstdirslash=$dstdir/;; - esac - obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - # Note that $RANDOM variable is not portable (e.g. dash); Use it - # here however when possible just to lower collision chance. - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - - trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - - # Because "mkdir -p" follows existing symlinks and we likely work - # directly in world-writeable /tmp, make sure that the '$tmpdir' - # directory is successfully created first before we actually test - # 'mkdir -p' feature. - if (umask $mkdir_umask && - $mkdirprog $mkdir_mode "$tmpdir" && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - test_tmpdir="$tmpdir/a" - ls_ld_tmpdir=`ls -ld "$test_tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -387,51 +384,53 @@ do # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; esac + eval "$initialize_posix_glob" + oIFS=$IFS IFS=/ - set -f + $posix_glob set -f set fnord $dstdir shift - set +f + $posix_glob set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -444,8 +443,8 @@ do else # Make a couple of temp file names in the proper directory. - dsttmp=${dstdirslash}_inst.$$_ - rmtmp=${dstdirslash}_rm.$$_ + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 @@ -466,12 +465,15 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - set +f && + $posix_glob set +f && + test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -484,24 +486,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 @@ -510,9 +512,9 @@ do done # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" +# time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: diff --git a/Build/source/utils/asymptote/lex.yy.cc b/Build/source/utils/asymptote/lex.yy.cc index ab5d94eb78e..f4d1a3850eb 100644 --- a/Build/source/utils/asymptote/lex.yy.cc +++ b/Build/source/utils/asymptote/lex.yy.cc @@ -18,7 +18,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 0 +#define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -118,25 +118,13 @@ typedef unsigned int flex_uint32_t; /* %if-c++-only */ /* %endif */ -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST +/* TODO: this is always defined, so inline it */ #define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) #else -#define yyconst +#define yynoreturn #endif /* %not-for-header */ @@ -211,7 +199,7 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern yy_size_t yyleng; +extern int yyleng; /* %endif */ /* %if-c-only */ @@ -260,12 +248,12 @@ struct yy_buffer_state /* Size of input buffer in bytes, not including room for EOB * characters. */ - yy_size_t yy_buf_size; + int yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -321,7 +309,7 @@ struct yy_buffer_state /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %endif */ /* %ok-for-header */ @@ -349,11 +337,11 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; /* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; +static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ @@ -381,7 +369,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); /* %endif */ @@ -419,7 +407,7 @@ void yyfree (void * ); typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; @@ -440,10 +428,7 @@ extern char *yytext; static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); -#if defined(__GNUC__) && __GNUC__ >= 3 -__attribute__((__noreturn__)) -#endif -static void yy_fatal_error (yyconst char msg[] ); +static void yynoreturn yy_fatal_error (yyconst char* msg ); /* %endif */ @@ -453,7 +438,7 @@ static void yy_fatal_error (yyconst char msg[] ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (size_t) (yy_cp - yy_bp); \ + yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ @@ -556,43 +541,43 @@ static yyconst YY_CHAR yy_meta[63] = static yyconst flex_uint16_t yy_base[344] = { 0, 0, 0, 60, 62, 64, 69, 74, 79, 0, 0, - 112, 0, 539, 540, 540, 540, 535, 511, 540, 510, - 527, 508, 523, 540, 540, 540, 66, 69, 540, 70, - 83, 72, 157, 509, 540, 63, 505, 67, 540, 501, - 0, 540, 96, 540, 150, 142, 478, 133, 480, 137, - 148, 157, 146, 478, 55, 472, 485, 471, 150, 476, - 480, 540, 461, 540, 540, 540, 540, 517, 500, 504, - 540, 540, 514, 203, 207, 540, 540, 513, 213, 244, - 540, 540, 540, 540, 512, 488, 540, 505, 498, 496, - 493, 491, 485, 85, 481, 194, 477, 0, 219, 470, - - 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, - 540, 487, 540, 207, 211, 540, 0, 540, 217, 223, - 239, 540, 540, 540, 540, 0, 500, 540, 540, 464, - 462, 455, 459, 451, 446, 458, 0, 443, 445, 448, - 441, 443, 0, 441, 451, 432, 442, 446, 442, 447, - 435, 200, 198, 435, 438, 426, 430, 427, 434, 540, - 540, 540, 540, 540, 265, 300, 540, 270, 473, 540, - 540, 540, 306, 312, 540, 275, 472, 540, 262, 266, - 540, 540, 540, 540, 540, 540, 540, 304, 540, 540, - 540, 540, 457, 0, 470, 540, 272, 307, 0, 320, - - 310, 331, 339, 315, 432, 0, 431, 434, 416, 423, - 422, 426, 420, 412, 0, 417, 414, 416, 419, 414, - 407, 402, 411, 402, 401, 399, 399, 397, 398, 397, - 408, 407, 410, 400, 360, 366, 268, 540, 358, 369, - 380, 361, 392, 407, 398, 175, 0, 401, 0, 397, - 399, 0, 387, 383, 385, 0, 399, 398, 390, 392, - 380, 379, 386, 389, 364, 0, 0, 367, 349, 358, - 540, 540, 388, 391, 344, 342, 0, 345, 339, 0, - 347, 0, 323, 336, 337, 314, 312, 320, 0, 314, - 308, 311, 291, 295, 282, 281, 0, 0, 266, 259, - - 262, 262, 0, 260, 250, 236, 235, 0, 232, 0, - 0, 0, 219, 221, 213, 0, 202, 178, 159, 0, - 162, 142, 0, 135, 0, 0, 0, 0, 0, 0, - 0, 0, 143, 69, 0, 540, 413, 416, 419, 422, - 68, 66, 425 + 112, 0, 541, 542, 542, 542, 537, 513, 542, 512, + 529, 510, 525, 542, 542, 542, 66, 69, 542, 70, + 83, 72, 157, 511, 542, 83, 507, 62, 542, 503, + 0, 542, 90, 542, 150, 142, 480, 133, 482, 54, + 148, 147, 146, 480, 147, 474, 487, 473, 162, 478, + 482, 542, 463, 542, 542, 542, 542, 519, 502, 506, + 542, 542, 516, 203, 212, 542, 542, 515, 219, 250, + 542, 542, 542, 542, 514, 490, 542, 507, 500, 498, + 495, 493, 487, 185, 483, 156, 479, 0, 223, 472, + + 542, 542, 542, 542, 542, 542, 542, 542, 542, 542, + 542, 489, 542, 211, 217, 542, 0, 542, 222, 228, + 243, 542, 542, 542, 542, 0, 502, 542, 542, 466, + 464, 457, 461, 453, 448, 460, 0, 445, 447, 450, + 443, 445, 0, 443, 453, 434, 444, 448, 444, 449, + 437, 182, 215, 437, 440, 428, 432, 429, 436, 542, + 542, 542, 542, 542, 271, 306, 542, 276, 475, 542, + 542, 542, 312, 318, 542, 281, 474, 542, 268, 272, + 542, 542, 542, 542, 542, 542, 542, 310, 542, 542, + 542, 542, 459, 0, 472, 542, 278, 313, 0, 326, + + 316, 337, 345, 321, 434, 0, 433, 436, 418, 425, + 424, 428, 422, 414, 0, 419, 416, 418, 421, 416, + 409, 404, 413, 404, 403, 401, 401, 399, 400, 399, + 410, 409, 412, 402, 366, 372, 274, 542, 364, 375, + 386, 367, 394, 409, 400, 204, 0, 403, 0, 399, + 401, 0, 389, 385, 387, 0, 401, 400, 392, 393, + 362, 361, 367, 366, 359, 0, 0, 361, 343, 353, + 542, 542, 394, 397, 339, 330, 0, 334, 331, 0, + 335, 0, 318, 325, 327, 308, 302, 312, 0, 306, + 281, 289, 272, 271, 273, 271, 0, 0, 253, 248, + + 245, 238, 0, 236, 226, 221, 227, 0, 221, 0, + 0, 0, 194, 187, 179, 0, 179, 165, 155, 0, + 163, 141, 0, 137, 0, 0, 0, 0, 0, 0, + 0, 0, 66, 61, 0, 542, 419, 422, 425, 428, + 68, 66, 431 } ; static yyconst flex_int16_t yy_def[344] = @@ -637,7 +622,7 @@ static yyconst flex_int16_t yy_def[344] = 336, 336, 336 } ; -static yyconst flex_uint16_t yy_nxt[603] = +static yyconst flex_uint16_t yy_nxt[605] = { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -647,68 +632,68 @@ static yyconst flex_uint16_t yy_nxt[603] = 57, 58, 59, 60, 41, 61, 41, 41, 62, 63, 64, 65, 67, 68, 67, 68, 72, 73, 194, 74, 126, 72, 73, 69, 74, 69, 77, 78, 70, 108, - 70, 77, 78, 110, 79, 116, 112, 105, 123, 79, - 117, 109, 125, 105, 111, 113, 75, 118, 102, 127, + 70, 77, 78, 110, 79, 116, 112, 125, 105, 79, + 117, 109, 102, 127, 111, 113, 75, 118, 138, 335, - 114, 75, 115, 115, 115, 149, 80, 335, 150, 191, - 190, 80, 82, 83, 84, 85, 86, 82, 87, 88, + 114, 75, 115, 115, 115, 334, 80, 105, 123, 105, + 139, 80, 82, 83, 84, 85, 86, 82, 87, 88, 87, 87, 82, 82, 82, 89, 90, 82, 91, 92, 87, 82, 82, 82, 93, 82, 94, 95, 96, 82, 97, 98, 98, 82, 99, 82, 100, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 82, 87, 82, 101, 119, 128, 120, 120, 120, 130, - 134, 138, 334, 140, 129, 146, 135, 333, 131, 154, - 136, 155, 332, 139, 132, 141, 121, 143, 142, 147, - - 156, 331, 144, 145, 165, 165, 166, 157, 167, 164, - 169, 330, 170, 167, 173, 173, 174, 278, 175, 190, - 191, 189, 195, 175, 197, 279, 198, 198, 198, 329, - 115, 115, 115, 227, 200, 168, 201, 201, 201, 171, - 119, 328, 120, 120, 120, 176, 172, 177, 228, 178, - 121, 225, 226, 203, 178, 203, 202, 327, 204, 204, - 204, 326, 121, 179, 180, 325, 165, 165, 166, 324, - 167, 178, 165, 166, 323, 167, 178, 173, 174, 181, - 182, 237, 237, 322, 183, 238, 238, 271, 271, 200, - 184, 198, 198, 198, 185, 321, 186, 168, 187, 320, - - 188, 165, 235, 166, 319, 167, 318, 173, 173, 174, - 167, 175, 317, 173, 236, 174, 175, 175, 316, 239, - 315, 314, 175, 239, 239, 239, 198, 198, 198, 201, - 201, 201, 168, 239, 204, 204, 204, 200, 176, 198, - 198, 198, 313, 312, 176, 241, 121, 241, 311, 240, - 242, 242, 242, 203, 310, 203, 309, 308, 204, 204, - 204, 165, 165, 166, 307, 167, 306, 173, 173, 174, - 167, 175, 305, 272, 304, 303, 175, 272, 272, 272, - 242, 242, 242, 273, 302, 273, 301, 272, 274, 274, - 274, 300, 168, 299, 241, 298, 241, 297, 176, 242, - - 242, 242, 273, 296, 273, 295, 294, 274, 274, 274, - 274, 274, 274, 66, 66, 66, 71, 71, 71, 76, - 76, 76, 81, 81, 81, 199, 293, 199, 292, 291, - 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, - 280, 277, 276, 275, 270, 269, 268, 267, 266, 265, - 264, 263, 262, 261, 260, 259, 258, 257, 256, 255, - 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, - 244, 243, 189, 190, 172, 164, 234, 233, 232, 231, - 230, 229, 224, 223, 222, 221, 220, 219, 218, 217, - 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, - - 206, 205, 102, 196, 190, 191, 190, 190, 190, 193, - 190, 192, 191, 190, 189, 172, 164, 163, 162, 161, - 160, 159, 158, 153, 152, 151, 148, 137, 133, 105, - 124, 122, 107, 106, 105, 104, 103, 102, 336, 13, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 134, 190, 191, 140, 129, 146, 135, 143, 131, 333, + 136, 332, 144, 145, 132, 141, 121, 149, 142, 147, + + 150, 154, 331, 155, 165, 165, 166, 330, 167, 191, + 190, 191, 156, 167, 164, 169, 329, 170, 328, 157, + 173, 173, 174, 327, 175, 189, 195, 326, 197, 175, + 198, 198, 198, 225, 226, 168, 115, 115, 115, 200, + 325, 201, 201, 201, 171, 119, 278, 120, 120, 120, + 227, 176, 172, 177, 279, 178, 121, 203, 324, 203, + 178, 202, 204, 204, 204, 228, 323, 121, 322, 179, + 180, 321, 165, 165, 166, 320, 167, 178, 165, 166, + 319, 167, 178, 173, 174, 181, 182, 237, 237, 318, + 183, 238, 238, 271, 271, 200, 184, 198, 198, 198, + + 185, 317, 186, 168, 187, 316, 188, 165, 235, 166, + 315, 167, 314, 173, 173, 174, 167, 175, 313, 173, + 236, 174, 175, 175, 312, 239, 311, 310, 175, 239, + 239, 239, 198, 198, 198, 201, 201, 201, 168, 239, + 204, 204, 204, 200, 176, 198, 198, 198, 309, 308, + 176, 241, 121, 241, 307, 240, 242, 242, 242, 203, + 306, 203, 305, 304, 204, 204, 204, 165, 165, 166, + 303, 167, 302, 173, 173, 174, 167, 175, 301, 272, + 300, 299, 175, 272, 272, 272, 242, 242, 242, 273, + 298, 273, 297, 272, 274, 274, 274, 296, 168, 295, + + 241, 294, 241, 293, 176, 242, 242, 242, 273, 292, + 273, 291, 290, 274, 274, 274, 274, 274, 274, 66, + 66, 66, 71, 71, 71, 76, 76, 76, 81, 81, + 81, 199, 289, 199, 288, 287, 286, 285, 284, 283, + 282, 281, 280, 277, 276, 275, 270, 269, 268, 267, + 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, + 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, + 246, 245, 244, 243, 189, 190, 172, 164, 234, 233, + 232, 231, 230, 229, 224, 223, 222, 221, 220, 219, + 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, + + 208, 207, 206, 205, 102, 196, 190, 191, 190, 190, + 190, 193, 190, 192, 191, 190, 189, 172, 164, 163, + 162, 161, 160, 159, 158, 153, 152, 151, 148, 137, + 133, 105, 124, 122, 107, 106, 105, 104, 103, 102, + 336, 13, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336 + 336, 336, 336, 336 } ; -static yyconst flex_int16_t yy_chk[603] = +static yyconst flex_int16_t yy_chk[605] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -718,65 +703,65 @@ static yyconst flex_int16_t yy_chk[603] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 5, 5, 342, 5, 341, 6, 6, 3, 6, 4, 7, 7, 3, 27, - 4, 8, 8, 28, 7, 32, 30, 36, 36, 8, - 32, 27, 38, 38, 28, 30, 5, 32, 43, 43, + 4, 8, 8, 28, 7, 32, 30, 38, 38, 8, + 32, 27, 43, 43, 28, 30, 5, 32, 50, 334, - 31, 6, 31, 31, 31, 55, 7, 334, 55, 94, - 94, 8, 11, 11, 11, 11, 11, 11, 11, 11, + 31, 6, 31, 31, 31, 333, 7, 36, 36, 36, + 50, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 33, 45, 33, 33, 33, 46, - 48, 50, 333, 51, 45, 53, 48, 324, 46, 59, - 48, 59, 322, 50, 46, 51, 33, 52, 51, 53, - - 59, 321, 52, 52, 74, 74, 74, 59, 74, 75, - 75, 319, 75, 74, 79, 79, 79, 246, 79, 96, - 96, 99, 99, 79, 114, 246, 114, 114, 114, 318, - 115, 115, 115, 153, 119, 74, 119, 119, 119, 75, - 120, 317, 120, 120, 120, 79, 80, 80, 153, 80, - 115, 152, 152, 121, 80, 121, 119, 315, 121, 121, - 121, 314, 120, 80, 80, 313, 165, 165, 165, 309, - 165, 80, 168, 168, 307, 165, 80, 176, 176, 80, - 80, 179, 179, 306, 80, 180, 180, 237, 237, 197, - 80, 197, 197, 197, 80, 305, 80, 165, 80, 304, - - 80, 166, 166, 166, 302, 166, 301, 173, 173, 173, - 166, 173, 300, 174, 174, 174, 173, 174, 299, 188, - 296, 295, 174, 188, 188, 188, 198, 198, 198, 201, - 201, 201, 166, 188, 204, 204, 204, 200, 173, 200, - 200, 200, 294, 293, 174, 202, 198, 202, 292, 201, - 202, 202, 202, 203, 291, 203, 290, 288, 203, 203, - 203, 235, 235, 235, 287, 235, 286, 236, 236, 236, - 235, 236, 285, 239, 284, 283, 236, 239, 239, 239, - 242, 242, 242, 240, 281, 240, 279, 239, 240, 240, - 240, 278, 235, 276, 241, 275, 241, 270, 236, 241, - - 241, 241, 273, 269, 273, 268, 265, 273, 273, 273, - 274, 274, 274, 337, 337, 337, 338, 338, 338, 339, - 339, 339, 340, 340, 340, 343, 264, 343, 263, 262, - 261, 260, 259, 258, 257, 255, 254, 253, 251, 250, - 248, 245, 244, 243, 234, 233, 232, 231, 230, 229, - 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, - 218, 217, 216, 214, 213, 212, 211, 210, 209, 208, - 207, 205, 195, 193, 177, 169, 159, 158, 157, 156, - 155, 154, 151, 150, 149, 148, 147, 146, 145, 144, - 142, 141, 140, 139, 138, 136, 135, 134, 133, 132, - - 131, 130, 127, 112, 100, 97, 95, 93, 92, 91, - 90, 89, 88, 86, 85, 78, 73, 70, 69, 68, - 63, 61, 60, 58, 57, 56, 54, 49, 47, 40, - 37, 34, 23, 22, 21, 20, 18, 17, 13, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 48, 96, 96, 51, 45, 53, 48, 52, 46, 324, + 48, 322, 52, 52, 46, 51, 33, 55, 51, 53, + + 55, 59, 321, 59, 74, 74, 74, 319, 74, 94, + 94, 94, 59, 74, 75, 75, 318, 75, 317, 59, + 79, 79, 79, 315, 79, 99, 99, 314, 114, 79, + 114, 114, 114, 152, 152, 74, 115, 115, 115, 119, + 313, 119, 119, 119, 75, 120, 246, 120, 120, 120, + 153, 79, 80, 80, 246, 80, 115, 121, 309, 121, + 80, 119, 121, 121, 121, 153, 307, 120, 306, 80, + 80, 305, 165, 165, 165, 304, 165, 80, 168, 168, + 302, 165, 80, 176, 176, 80, 80, 179, 179, 301, + 80, 180, 180, 237, 237, 197, 80, 197, 197, 197, + + 80, 300, 80, 165, 80, 299, 80, 166, 166, 166, + 296, 166, 295, 173, 173, 173, 166, 173, 294, 174, + 174, 174, 173, 174, 293, 188, 292, 291, 174, 188, + 188, 188, 198, 198, 198, 201, 201, 201, 166, 188, + 204, 204, 204, 200, 173, 200, 200, 200, 290, 288, + 174, 202, 198, 202, 287, 201, 202, 202, 202, 203, + 286, 203, 285, 284, 203, 203, 203, 235, 235, 235, + 283, 235, 281, 236, 236, 236, 235, 236, 279, 239, + 278, 276, 236, 239, 239, 239, 242, 242, 242, 240, + 275, 240, 270, 239, 240, 240, 240, 269, 235, 268, + + 241, 265, 241, 264, 236, 241, 241, 241, 273, 263, + 273, 262, 261, 273, 273, 273, 274, 274, 274, 337, + 337, 337, 338, 338, 338, 339, 339, 339, 340, 340, + 340, 343, 260, 343, 259, 258, 257, 255, 254, 253, + 251, 250, 248, 245, 244, 243, 234, 233, 232, 231, + 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, + 220, 219, 218, 217, 216, 214, 213, 212, 211, 210, + 209, 208, 207, 205, 195, 193, 177, 169, 159, 158, + 157, 156, 155, 154, 151, 150, 149, 148, 147, 146, + 145, 144, 142, 141, 140, 139, 138, 136, 135, 134, + + 133, 132, 131, 130, 127, 112, 100, 97, 95, 93, + 92, 91, 90, 89, 88, 86, 85, 78, 73, 70, + 69, 68, 63, 61, 60, 58, 57, 56, 54, 49, + 47, 40, 37, 34, 23, 22, 21, 20, 18, 17, + 13, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336 + 336, 336, 336, 336 } ; static yy_state_type yy_last_accepting_state; @@ -1012,7 +997,7 @@ void getstring(void) -#line 1016 "lex.yy.cc" +#line 1001 "lex.yy.cc" #define INITIAL 0 #define lexcomment 1 @@ -1069,7 +1054,7 @@ FILE *yyget_out (void ); void yyset_out (FILE * _out_str ); -yy_size_t yyget_leng (void ); + int yyget_leng (void ); char *yyget_text (void ); @@ -1145,7 +1130,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ @@ -1160,7 +1145,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1173,7 +1158,7 @@ static int input (void ); else \ { \ errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ @@ -1305,7 +1290,7 @@ YY_DECL #line 209 "camp.l" -#line 1309 "lex.yy.cc" +#line 1294 "lex.yy.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -1337,10 +1322,10 @@ yy_match: if ( yy_current_state >= 337 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 540 ); + while ( yy_base[yy_current_state] != 542 ); yy_find_action: /* %% [10.0] code to find the action number goes here */ @@ -2132,7 +2117,7 @@ YY_RULE_SETUP #line 445 "camp.l" ECHO; YY_BREAK -#line 2136 "lex.yy.cc" +#line 2121 "lex.yy.cc" case YY_END_OF_BUFFER: { @@ -2348,7 +2333,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -2357,11 +2342,11 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; + b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( @@ -2403,10 +2388,10 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } @@ -2451,7 +2436,7 @@ static int yy_get_next_buffer (void) if ( yy_current_state >= 337 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; @@ -2484,7 +2469,7 @@ static int yy_get_next_buffer (void) if ( yy_current_state >= 337 ) yy_c = yy_meta[(unsigned int) yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 336); return yy_is_jam ? 0 : yy_current_state; @@ -2508,7 +2493,7 @@ static int yy_get_next_buffer (void) if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ - yy_size_t number_to_move = (yy_n_chars) + 2; + int number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; char *source = @@ -2520,7 +2505,7 @@ static int yy_get_next_buffer (void) yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); @@ -2567,7 +2552,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -2591,7 +2576,7 @@ static int yy_get_next_buffer (void) case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) - return EOF; + return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; @@ -2719,12 +2704,12 @@ static void yy_load_buffer_state (void) if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - b->yy_buf_size = (yy_size_t)size; + b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -2907,7 +2892,7 @@ static void yyensure_buffer_stack (void) /* %if-c++-only */ /* %endif */ { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -2964,16 +2949,16 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ - return 0; + return NULL; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; - b->yy_input_file = 0; + b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; @@ -2998,7 +2983,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { - return yy_scan_bytes(yystr,strlen(yystr) ); + return yy_scan_bytes(yystr,(int) strlen(yystr) ); } /* %endif */ @@ -3010,7 +2995,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -3018,7 +3003,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; + n = (yy_size_t) _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -3046,7 +3031,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len #endif /* %if-c-only */ -static void yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); @@ -3106,7 +3091,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -3173,10 +3158,10 @@ static int yy_init_globals (void) * This function is called from yylex_destroy(), so don't allocate here. */ - (yy_buffer_stack) = 0; + (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; + (yy_c_buf_p) = NULL; (yy_init) = 0; (yy_start) = 0; @@ -3185,8 +3170,8 @@ static int yy_init_globals (void) yyin = stdin; yyout = stdout; #else - yyin = (FILE *) 0; - yyout = (FILE *) 0; + yyin = NULL; + yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by @@ -3249,7 +3234,7 @@ static int yy_flex_strlen (yyconst char * s ) void *yyalloc (yy_size_t size ) { - return (void *) malloc( size ); + return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size ) @@ -3262,7 +3247,7 @@ void *yyrealloc (void * ptr, yy_size_t size ) * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ - return (void *) realloc( (char *) ptr, size ); + return realloc(ptr, size); } void yyfree (void * ptr ) diff --git a/Build/source/utils/asymptote/libatomic_ops-7.4.4.tar.gz b/Build/source/utils/asymptote/libatomic_ops-7.4.4.tar.gz Binary files differdeleted file mode 100644 index c3a72acb5b4..00000000000 --- a/Build/source/utils/asymptote/libatomic_ops-7.4.4.tar.gz +++ /dev/null diff --git a/Build/source/utils/asymptote/libatomic_ops-7.6.2.tar.gz b/Build/source/utils/asymptote/libatomic_ops-7.6.2.tar.gz Binary files differnew file mode 100644 index 00000000000..2794f8016a1 --- /dev/null +++ b/Build/source/utils/asymptote/libatomic_ops-7.6.2.tar.gz diff --git a/Build/source/utils/asymptote/main.cc b/Build/source/utils/asymptote/main.cc index 24bc26e1a1f..7350ab3da42 100644 --- a/Build/source/utils/asymptote/main.cc +++ b/Build/source/utils/asymptote/main.cc @@ -19,6 +19,8 @@ * *************/ +#define _POSIX_C_SOURCE 200809L + #include <iostream> #include <cstdlib> #include <cerrno> diff --git a/Build/source/utils/asymptote/mathop.h b/Build/source/utils/asymptote/mathop.h index 1fda216e592..cdacdf938f9 100644 --- a/Build/source/utils/asymptote/mathop.h +++ b/Build/source/utils/asymptote/mathop.h @@ -238,21 +238,23 @@ struct power<Int> { } }; -template <typename T> +template <typename> struct mod { - T operator() (T x, T y, size_t i=0) { + Int operator() (Int x, Int y, size_t i=0) { if(y == 0) dividebyzero(i); return portableMod(x,y); } }; -template <typename T> +template <typename> struct quotient { - T operator() (T x, T y, size_t i=0) { + Int operator() (Int x, Int y, size_t i=0) { if(y == 0) dividebyzero(i); if(y == -1) return Negate(x); // Implementation-independent definition of integer division: round down - return (x-portableMod(x,y))/y; + Int q=x/y; + if(q >= 0 || y*q == x) return q; + return q-1; } }; diff --git a/Build/source/utils/asymptote/patches/README b/Build/source/utils/asymptote/patches/README index bc21d024881..1d1b63b9f3b 100644 --- a/Build/source/utils/asymptote/patches/README +++ b/Build/source/utils/asymptote/patches/README @@ -16,6 +16,11 @@ out-of-memory errors. The file cygwin_glu.patch adds missing GLU 1.3 declarations to w32api/GL/glu.h. +The file cygwin_gc.patch fixes redefined symbols in the Boehm garbage collector. + +The file cygwin_freeglut-2.8.1.patch fixes undefined symbols when compiling the +freeglut library under cygwin. + The file fixmem.reg patches the Microsoft Windows registry so that the cygwin1.dll library can allocate more than 384MB. It is applied automatically by the Asymptote setup.exe file but may also be applied manually: diff --git a/Build/source/utils/asymptote/patches/cygwin_freeglut-2.8.1.patch b/Build/source/utils/asymptote/patches/cygwin_freeglut-2.8.1.patch new file mode 100644 index 00000000000..6b2ea618c70 --- /dev/null +++ b/Build/source/utils/asymptote/patches/cygwin_freeglut-2.8.1.patch @@ -0,0 +1,13 @@ +diff -r -u freeglut-2.8.1/src/freeglut_internal.h freeglut-2.8.1J/src/freeglut_internal.h +--- freeglut-2.8.1/src/freeglut_internal.h 2012-11-19 06:14:16.000000000 -0700 ++++ freeglut-2.8.1J/src/freeglut_internal.h 2018-01-05 11:38:25.214161500 -0700 +@@ -32,6 +32,9 @@ + # include "config.h" + #endif + ++#define GCL_HCURSOR (-12) ++#define _snprintf snprintf ++ + /* XXX Update these for each release! */ + #define VERSION_MAJOR 2 + #define VERSION_MINOR 8 diff --git a/Build/source/utils/asymptote/patches/cygwin_gc.patch b/Build/source/utils/asymptote/patches/cygwin_gc.patch new file mode 100644 index 00000000000..1af6f6f2067 --- /dev/null +++ b/Build/source/utils/asymptote/patches/cygwin_gc.patch @@ -0,0 +1,77 @@ +diff -ru gc-7.6.2.orig/include/config.h.in gc-7.6.2/include/config.h.in +--- gc-7.6.2.orig/include/config.h.in 2017-12-23 00:48:37.000000000 -0800 ++++ gc-7.6.2/include/config.h.in 2018-01-12 13:42:30.026704300 -0800 +@@ -100,19 +100,27 @@ + #undef GC_USE_DLOPEN_WRAP + + /* The major version number of this GC release. */ ++#ifndef GC_VERSION_MAJOR + #undef GC_VERSION_MAJOR ++#endif + + /* The micro version number of this GC release. */ ++#ifndef GC_VERSION_MICRO + #undef GC_VERSION_MICRO ++#endif + + /* The minor version number of this GC release. */ ++#ifndef GC_VERSION_MINOR + #undef GC_VERSION_MINOR ++#endif + + /* Define to support pthreads-win32 or winpthreads. */ + #undef GC_WIN32_PTHREADS + + /* Define to support Win32 threads. */ ++#ifndef GC_WIN32_THREADS + #undef GC_WIN32_THREADS ++#endif + + /* Define to install pthread_atfork() handlers by default. */ + #undef HANDLE_FORK +@@ -196,22 +204,32 @@ + #undef PACKAGE + + /* Define to the address where bug reports for this package should be sent. */ ++#ifndef PACKAGE_BUGREPORT + #undef PACKAGE_BUGREPORT ++#endif + + /* Define to the full name of this package. */ ++#ifndef PACKAGE_NAME + #undef PACKAGE_NAME ++#endif + + /* Define to the full name and version of this package. */ ++#ifndef PACKAGE_STRING + #undef PACKAGE_STRING ++#endif + + /* Define to the one symbol short name of this package. */ ++#ifndef PACKAGE_TARNAME + #undef PACKAGE_TARNAME ++#endif + + /* Define to the home page for this package. */ + #undef PACKAGE_URL + + /* Define to the version of this package. */ ++#ifndef PACKAGE_VERSION + #undef PACKAGE_VERSION ++#endif + + /* Define to enable parallel marking. */ + #undef PARALLEL_MARK +diff -ru gc-7.6.2.orig/include/gc_config_macros.h gc-7.6.2/include/gc_config_macros.h +--- gc-7.6.2.orig/include/gc_config_macros.h 2017-12-23 00:46:29.000000000 -0800 ++++ gc-7.6.2/include/gc_config_macros.h 2018-01-12 13:44:29.838482500 -0800 +@@ -48,7 +48,9 @@ + # define GC_LINUX_THREADS + #endif + #if defined(WIN32_THREADS) ++# ifndef GC_WIN32_THREADS + # define GC_WIN32_THREADS ++# endif + #endif + #if defined(RTEMS_THREADS) + # define GC_RTEMS_PTHREADS diff --git a/Build/source/utils/asymptote/predicates.cc b/Build/source/utils/asymptote/predicates.cc index 15fc3d4135f..0b0a6aff865 100644 --- a/Build/source/utils/asymptote/predicates.cc +++ b/Build/source/utils/asymptote/predicates.cc @@ -663,8 +663,8 @@ static float uniformfloatrand() /* */ /*****************************************************************************/ -static int fast_expansion_sum_zeroelim(int elen, REAL *e, - int flen, REAL *f, REAL *h) +static int fast_expansion_sum_zeroelim(int elen, const REAL *e, + int flen, const REAL *f, REAL *h) /* h cannot be e or f. */ { REAL Q; @@ -749,7 +749,7 @@ static int fast_expansion_sum_zeroelim(int elen, REAL *e, /* */ /*****************************************************************************/ -static int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h) +static int scale_expansion_zeroelim(int elen, const REAL *e, REAL b, REAL *h) /* e and h cannot be the same. */ { INEXACT REAL Q, sum; @@ -797,7 +797,7 @@ static int scale_expansion_zeroelim(int elen, REAL *e, REAL b, REAL *h) /* */ /*****************************************************************************/ -static REAL estimate(int elen, REAL *e) +static REAL estimate(int elen, const REAL *e) { REAL Q; int eindex; @@ -835,7 +835,7 @@ static REAL estimate(int elen, REAL *e) /* */ /*****************************************************************************/ -REAL orient2dadapt(REAL *pa, REAL *pb, REAL *pc, REAL detsum) +REAL orient2dadapt(const REAL *pa, const REAL *pb, const REAL *pc, const REAL detsum) { INEXACT REAL acx, acy, bcx, bcy; REAL acxtail, acytail, bcxtail, bcytail; @@ -915,7 +915,7 @@ REAL orient2dadapt(REAL *pa, REAL *pb, REAL *pc, REAL detsum) return(D[Dlength - 1]); } -REAL orient2d(REAL *pa, REAL *pb, REAL *pc) +REAL orient2d(const REAL *pa, const REAL *pb, const REAL *pc) { REAL detleft, detright, det; REAL detsum, errbound; @@ -957,7 +957,8 @@ REAL orient2d(REAL *pa, REAL *pb, REAL *pc) return orient; } -REAL orient2d(REAL ax, REAL ay, REAL bx, REAL by, REAL cx, REAL cy) +REAL orient2d(const REAL ax, const REAL ay, const REAL bx, const REAL by, + const REAL cx, const REAL cy) { REAL detleft, detright, det; REAL detsum, errbound; @@ -1032,7 +1033,7 @@ REAL orient2d(REAL ax, REAL ay, REAL bx, REAL by, REAL cx, REAL cy) /* */ /*****************************************************************************/ -static REAL orient3dadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, +static REAL orient3dadapt(const REAL *pa, const REAL *pb, const REAL *pc, const REAL *pd, REAL permanent) { INEXACT REAL adx, bdx, cdx, ady, bdy, cdy, adz, bdz, cdz; @@ -1433,7 +1434,7 @@ static REAL orient3dadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, return finnow[finlength - 1]; } -REAL orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd) +REAL orient3d(const REAL *pa, const REAL *pb, const REAL *pc, const REAL *pd) { REAL adx, bdx, cdx, ady, bdy, cdy, adz, bdz, cdz; REAL bdxcdy, cdxbdy, cdxady, adxcdy, adxbdy, bdxady; @@ -1506,7 +1507,7 @@ REAL orient3d(REAL *pa, REAL *pb, REAL *pc, REAL *pd) /* */ /*****************************************************************************/ -static REAL incircleadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, +static REAL incircleadapt(const REAL *pa, const REAL *pb, const REAL *pc, const REAL *pd, REAL permanent) { INEXACT REAL adx, bdx, cdx, ady, bdy, cdy; @@ -2078,7 +2079,7 @@ static REAL incircleadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, return finnow[finlength - 1]; } -REAL incircle(REAL *pa, REAL *pb, REAL *pc, REAL *pd) +REAL incircle(const REAL *pa, const REAL *pb, const REAL *pc, const REAL *pd) { REAL adx, bdx, cdx, ady, bdy, cdy; REAL bdxcdy, cdxbdy, cdxady, adxcdy, adxbdy, bdxady; @@ -2207,7 +2208,7 @@ REAL incircle(REAL ax, REAL ay, REAL bx, REAL by, REAL cx, REAL cy, REAL dx, /* */ /*****************************************************************************/ -static REAL insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) +static REAL insphereexact(const REAL *pa, const REAL *pb, const REAL *pc, const REAL *pd, const REAL *pe) { INEXACT REAL axby1, bxcy1, cxdy1, dxey1, exay1; INEXACT REAL bxay1, cxby1, dxcy1, exdy1, axey1; @@ -2459,7 +2460,7 @@ static REAL insphereexact(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) return deter[deterlen - 1]; } -static REAL insphereadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe, +static REAL insphereadapt(const REAL *pa, const REAL *pb, const REAL *pc, const REAL *pd, const REAL *pe, REAL permanent) { INEXACT REAL aex, bex, cex, dex, aey, bey, cey, dey, aez, bez, cez, dez; @@ -2674,7 +2675,7 @@ static REAL insphereadapt(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe, return insphereexact(pa, pb, pc, pd, pe); } -REAL insphere(REAL *pa, REAL *pb, REAL *pc, REAL *pd, REAL *pe) +REAL insphere(const REAL *pa, const REAL *pb, const REAL *pc, const REAL *pd, const REAL *pe) { REAL aex, bex, cex, dex; REAL aey, bey, cey, dey; diff --git a/Build/source/utils/asymptote/predicates.h b/Build/source/utils/asymptote/predicates.h index b13edf17799..9843c548ffb 100644 --- a/Build/source/utils/asymptote/predicates.h +++ b/Build/source/utils/asymptote/predicates.h @@ -1,15 +1,19 @@ #ifndef PREDICATES_H #define PREDICATES_H -double orient2d(double* pa, double* pb, double* pc); +double orient2d(const double* pa, const double* pb, const double* pc); double orient2d(double ax, double ay, double bx, double by, double cx, double cy); -double orient2dadapt(double *pa, double *pb, double *pc, double detsum); -double orient3d(double* pa, double* pb, double* pc, double* pd); -double incircle(double* pa, double* pb, double* pc, double* pd); +double orient2dadapt(const double *pa, const double *pb, const double *pc, + double detsum); +double orient3d(const double *pa, const double *pb, const double *pc, + const double *pd); +double incircle(const double *pa, const double *pb, const double *pc, + const double *pd); double incircle(double ax, double ay, double bx, double by, double cx, double cy, double dx, double dy); -double insphere(double* pa, double* pb, double* pc, double* pd, double* pe); +double insphere(const double *pa, const double *pb, const double *pc, + const double *pd, const double *pe); extern const double resulterrbound,ccwerrboundA,ccwerrboundB,ccwerrboundC, o3derrboundA,o3derrboundB,o3derrboundC,iccerrboundA,iccerrboundB, diff --git a/Build/source/utils/asymptote/revision.cc b/Build/source/utils/asymptote/revision.cc index 514775b02ab..2fe371f37ac 100644 --- a/Build/source/utils/asymptote/revision.cc +++ b/Build/source/utils/asymptote/revision.cc @@ -1 +1 @@ -const char *REVISION="2.41"; +const char *REVISION="2.42"; diff --git a/Build/source/utils/asymptote/runarray.cc b/Build/source/utils/asymptote/runarray.cc index 734143d262d..0325acef92d 100644 --- a/Build/source/utils/asymptote/runarray.cc +++ b/Build/source/utils/asymptote/runarray.cc @@ -1322,7 +1322,7 @@ void array3Transpose(stack *Stack) {Stack->push<array*>(c); return;} } -// In a boolean array, find the index of the nth true value or -1 if not found +// Find the index of the nth true value in a boolean array or -1 if not found. // If n is negative, search backwards. #line 1107 "runarray.in" // Int find(boolarray *a, Int n=1); @@ -1346,15 +1346,32 @@ void gen_runarray44(stack *Stack) {Stack->push<Int>(j); return;} } +// Find all indices of true values in a boolean array. +#line 1125 "runarray.in" +// Intarray* findall(boolarray *a); +void gen_runarray45(stack *Stack) +{ + boolarray * a=vm::pop<boolarray *>(Stack); +#line 1126 "runarray.in" + size_t size=checkArray(a); + array *b=new array(0); + for(size_t i=0; i < size; i++) { + if(read<bool>(a,i)) { + b->push((Int) i); + } + } + {Stack->push<Intarray*>(b); return;} +} + // construct vector obtained by replacing those elements of b for which the // corresponding elements of a are false by the corresponding element of c. -#line 1126 "runarray.in" +#line 1139 "runarray.in" void arrayConditional(stack *Stack) { array * c=vm::pop<array *>(Stack); array * b=vm::pop<array *>(Stack); array * a=vm::pop<array *>(Stack); -#line 1127 "runarray.in" +#line 1140 "runarray.in" size_t size=checkArray(a); array *r=new array(size); if(b && c) { @@ -1378,22 +1395,22 @@ void arrayConditional(stack *Stack) } // Return an n x n identity matrix. -#line 1151 "runarray.in" +#line 1164 "runarray.in" // realarray2* identity(Int n); -void gen_runarray46(stack *Stack) +void gen_runarray47(stack *Stack) { Int n=vm::pop<Int>(Stack); -#line 1152 "runarray.in" +#line 1165 "runarray.in" {Stack->push<realarray2*>(Identity(n)); return;} } // Return the inverse of an n x n matrix a using Gauss-Jordan elimination. -#line 1157 "runarray.in" +#line 1170 "runarray.in" // realarray2* inverse(realarray2 *a); -void gen_runarray47(stack *Stack) +void gen_runarray48(stack *Stack) { realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1158 "runarray.in" +#line 1171 "runarray.in" size_t n=checkArray(a); double *A; copyArray2C(A,a,true,0,NoGC); @@ -1406,14 +1423,14 @@ void gen_runarray47(stack *Stack) // Solve the linear equation ax=b by LU decomposition, returning the // solution x, where a is an n x n matrix and b is an array of length n. // If no solution exists, return an empty array. -#line 1171 "runarray.in" +#line 1184 "runarray.in" // realarray* solve(realarray2 *a, realarray *b, bool warn=true); -void gen_runarray48(stack *Stack) +void gen_runarray49(stack *Stack) { bool warn=vm::pop<bool>(Stack,true); realarray * b=vm::pop<realarray *>(Stack); realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1172 "runarray.in" +#line 1185 "runarray.in" size_t n=checkArray(a); if(n == 0) {Stack->push<realarray*>(new array(0)); return;} @@ -1465,14 +1482,14 @@ void gen_runarray48(stack *Stack) // Solve the linear equation ax=b by LU decomposition, returning the // solution x, where a is an n x n matrix and b is an n x m matrix. // If no solution exists, return an empty array. -#line 1224 "runarray.in" +#line 1237 "runarray.in" // realarray2* solve(realarray2 *a, realarray2 *b, bool warn=true); -void gen_runarray49(stack *Stack) +void gen_runarray50(stack *Stack) { bool warn=vm::pop<bool>(Stack,true); realarray2 * b=vm::pop<realarray2 *>(Stack); realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1225 "runarray.in" +#line 1238 "runarray.in" size_t n=checkArray(a); if(n == 0) {Stack->push<realarray2*>(new array(0)); return;} @@ -1534,12 +1551,12 @@ void gen_runarray49(stack *Stack) } // Compute the determinant of an n x n matrix. -#line 1287 "runarray.in" +#line 1300 "runarray.in" // real determinant(realarray2 *a); -void gen_runarray50(stack *Stack) +void gen_runarray51(stack *Stack) { realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1288 "runarray.in" +#line 1301 "runarray.in" real *A; copyArray2C(A,a); size_t n=checkArray(a); @@ -1554,13 +1571,13 @@ void gen_runarray50(stack *Stack) {Stack->push<real>(det); return;} } -#line 1303 "runarray.in" +#line 1316 "runarray.in" // realarray* *(realarray2 *a, realarray *b); -void gen_runarray51(stack *Stack) +void gen_runarray52(stack *Stack) { realarray * b=vm::pop<realarray *>(Stack); realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1304 "runarray.in" +#line 1317 "runarray.in" size_t n=checkArray(a); size_t m=checkArray(b); array *c=new array(n); @@ -1578,13 +1595,13 @@ void gen_runarray51(stack *Stack) {Stack->push<realarray*>(c); return;} } -#line 1322 "runarray.in" +#line 1335 "runarray.in" // realarray* *(realarray *a, realarray2 *b); -void gen_runarray52(stack *Stack) +void gen_runarray53(stack *Stack) { realarray2 * b=vm::pop<realarray2 *>(Stack); realarray * a=vm::pop<realarray *>(Stack); -#line 1323 "runarray.in" +#line 1336 "runarray.in" size_t n=checkArray(a); if(n != checkArray(b)) error(incommensurate); real *A; @@ -1612,62 +1629,62 @@ void gen_runarray52(stack *Stack) {Stack->push<realarray*>(c); return;} } -#line 1351 "runarray.in" +#line 1364 "runarray.in" // Intarray2* *(Intarray2 *a, Intarray2 *b); -void gen_runarray53(stack *Stack) +void gen_runarray54(stack *Stack) { Intarray2 * b=vm::pop<Intarray2 *>(Stack); Intarray2 * a=vm::pop<Intarray2 *>(Stack); -#line 1352 "runarray.in" +#line 1365 "runarray.in" {Stack->push<Intarray2*>(mult<Int>(a,b)); return;} } -#line 1356 "runarray.in" +#line 1369 "runarray.in" // realarray2* *(realarray2 *a, realarray2 *b); -void gen_runarray54(stack *Stack) +void gen_runarray55(stack *Stack) { realarray2 * b=vm::pop<realarray2 *>(Stack); realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1357 "runarray.in" +#line 1370 "runarray.in" {Stack->push<realarray2*>(mult<real>(a,b)); return;} } -#line 1361 "runarray.in" +#line 1374 "runarray.in" // pairarray2* *(pairarray2 *a, pairarray2 *b); -void gen_runarray55(stack *Stack) +void gen_runarray56(stack *Stack) { pairarray2 * b=vm::pop<pairarray2 *>(Stack); pairarray2 * a=vm::pop<pairarray2 *>(Stack); -#line 1362 "runarray.in" +#line 1375 "runarray.in" {Stack->push<pairarray2*>(mult<pair>(a,b)); return;} } -#line 1366 "runarray.in" +#line 1379 "runarray.in" // triple *(realarray2 *t, triple v); -void gen_runarray56(stack *Stack) +void gen_runarray57(stack *Stack) { triple v=vm::pop<triple>(Stack); realarray2 * t=vm::pop<realarray2 *>(Stack); -#line 1367 "runarray.in" +#line 1380 "runarray.in" {Stack->push<triple>(*t*v); return;} } -#line 1371 "runarray.in" +#line 1384 "runarray.in" // realarray2* AtA(realarray2 *a); -void gen_runarray57(stack *Stack) +void gen_runarray58(stack *Stack) { realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1372 "runarray.in" +#line 1385 "runarray.in" {Stack->push<realarray2*>(AtA<real>(a)); return;} } -#line 1376 "runarray.in" +#line 1389 "runarray.in" // pair project(triple v, realarray2 *t); -void gen_runarray58(stack *Stack) +void gen_runarray59(stack *Stack) { realarray2 * t=vm::pop<realarray2 *>(Stack); triple v=vm::pop<triple>(Stack); -#line 1377 "runarray.in" +#line 1390 "runarray.in" size_t n=checkArray(t); if(n != 4) error(incommensurate); array *t0=read<array*>(t,0); @@ -1692,13 +1709,13 @@ void gen_runarray58(stack *Stack) } // Compute the dot product of vectors a and b. -#line 1402 "runarray.in" +#line 1415 "runarray.in" // real dot(realarray *a, realarray *b); -void gen_runarray59(stack *Stack) +void gen_runarray60(stack *Stack) { realarray * b=vm::pop<realarray *>(Stack); realarray * a=vm::pop<realarray *>(Stack); -#line 1403 "runarray.in" +#line 1416 "runarray.in" size_t n=checkArrays(a,b); real sum=0.0; for(size_t i=0; i < n; ++i) @@ -1707,13 +1724,13 @@ void gen_runarray59(stack *Stack) } // Compute the complex dot product of vectors a and b. -#line 1412 "runarray.in" +#line 1425 "runarray.in" // pair dot(pairarray *a, pairarray *b); -void gen_runarray60(stack *Stack) +void gen_runarray61(stack *Stack) { pairarray * b=vm::pop<pairarray *>(Stack); pairarray * a=vm::pop<pairarray *>(Stack); -#line 1413 "runarray.in" +#line 1426 "runarray.in" size_t n=checkArrays(a,b); pair sum=zero; for(size_t i=0; i < n; ++i) @@ -1728,15 +1745,15 @@ void gen_runarray60(stack *Stack) // [ a[2] b[2] c[2] ] // [ ... ] // [ c[n-1] a[n-1] b[n-1] ] -#line 1428 "runarray.in" +#line 1441 "runarray.in" // realarray* tridiagonal(realarray *a, realarray *b, realarray *c, realarray *f); -void gen_runarray61(stack *Stack) +void gen_runarray62(stack *Stack) { realarray * f=vm::pop<realarray *>(Stack); realarray * c=vm::pop<realarray *>(Stack); realarray * b=vm::pop<realarray *>(Stack); realarray * a=vm::pop<realarray *>(Stack); -#line 1429 "runarray.in" +#line 1442 "runarray.in" size_t n=checkArrays(a,b); checkEqual(n,checkArray(c)); checkEqual(n,checkArray(f)); @@ -1833,16 +1850,16 @@ void gen_runarray61(stack *Stack) } // Root solve by Newton-Raphson -#line 1526 "runarray.in" +#line 1539 "runarray.in" // real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x, bool verbose=false); -void gen_runarray62(stack *Stack) +void gen_runarray63(stack *Stack) { bool verbose=vm::pop<bool>(Stack,false); real x=vm::pop<real>(Stack); callableReal * fprime=vm::pop<callableReal *>(Stack); callableReal * f=vm::pop<callableReal *>(Stack); Int iterations=vm::pop<Int>(Stack,100); -#line 1528 "runarray.in" +#line 1541 "runarray.in" static const real fuzz=1000.0*DBL_EPSILON; Int i=0; size_t oldPrec=0; @@ -1888,9 +1905,9 @@ void gen_runarray62(stack *Stack) // Root solve by Newton-Raphson bisection // cf. routine rtsafe (Press et al., Numerical Recipes, 1991). -#line 1574 "runarray.in" +#line 1587 "runarray.in" // real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x1, real x2, bool verbose=false); -void gen_runarray63(stack *Stack) +void gen_runarray64(stack *Stack) { bool verbose=vm::pop<bool>(Stack,false); real x2=vm::pop<real>(Stack); @@ -1898,7 +1915,7 @@ void gen_runarray63(stack *Stack) callableReal * fprime=vm::pop<callableReal *>(Stack); callableReal * f=vm::pop<callableReal *>(Stack); Int iterations=vm::pop<Int>(Stack,100); -#line 1576 "runarray.in" +#line 1589 "runarray.in" static const real fuzz=1000.0*DBL_EPSILON; size_t oldPrec=0; if(verbose) @@ -1984,9 +2001,9 @@ void gen_runarray63(stack *Stack) // In this implementation, the binary search is interleaved // with a modified version of quadratic interpolation. // This is a C++ port of the Asymptote routine written by Charles Staats III. -#line 1662 "runarray.in" +#line 1675 "runarray.in" // real _findroot(callableReal *f, real a, real b, real tolerance, real fa, real fb); -void gen_runarray64(stack *Stack) +void gen_runarray65(stack *Stack) { real fb=vm::pop<real>(Stack); real fa=vm::pop<real>(Stack); @@ -1994,7 +2011,7 @@ void gen_runarray64(stack *Stack) real b=vm::pop<real>(Stack); real a=vm::pop<real>(Stack); callableReal * f=vm::pop<callableReal *>(Stack); -#line 1664 "runarray.in" +#line 1677 "runarray.in" if(fa == 0.0) {Stack->push<real>(a); return;} if(fb == 0.0) {Stack->push<real>(b); return;} @@ -2086,16 +2103,16 @@ void gen_runarray64(stack *Stack) {Stack->push<real>(a-(b-a)/(fb-fa)*fa); return;} } -#line 1756 "runarray.in" +#line 1769 "runarray.in" // real simpson(callableReal *f, real a, real b, real acc=DBL_EPSILON, real dxmax=0); -void gen_runarray65(stack *Stack) +void gen_runarray66(stack *Stack) { real dxmax=vm::pop<real>(Stack,0); real acc=vm::pop<real>(Stack,DBL_EPSILON); real b=vm::pop<real>(Stack); real a=vm::pop<real>(Stack); callableReal * f=vm::pop<callableReal *>(Stack); -#line 1758 "runarray.in" +#line 1771 "runarray.in" real integral; if(dxmax <= 0) dxmax=fabs(b-a); callable *oldFunc=Func; @@ -2108,13 +2125,13 @@ void gen_runarray65(stack *Stack) } // Compute the fast Fourier transform of a pair array -#line 1771 "runarray.in" +#line 1784 "runarray.in" // pairarray* fft(pairarray *a, Int sign=1); -void gen_runarray66(stack *Stack) +void gen_runarray67(stack *Stack) { Int sign=vm::pop<Int>(Stack,1); pairarray * a=vm::pop<pairarray *>(Stack); -#line 1772 "runarray.in" +#line 1785 "runarray.in" #ifdef HAVE_LIBFFTW3 unsigned n=(unsigned) checkArray(a); array *c=new array(n); @@ -2143,12 +2160,12 @@ void gen_runarray66(stack *Stack) {Stack->push<pairarray*>(c); return;} } -#line 1801 "runarray.in" +#line 1814 "runarray.in" // Intarray2* triangulate(pairarray *z); -void gen_runarray67(stack *Stack) +void gen_runarray68(stack *Stack) { pairarray * z=vm::pop<pairarray *>(Stack); -#line 1802 "runarray.in" +#line 1815 "runarray.in" size_t nv=checkArray(z); // Call robust version of Gilles Dumoulin's port of Paul Bourke's // triangulation code. @@ -2182,12 +2199,12 @@ void gen_runarray67(stack *Stack) {Stack->push<Intarray2*>(t); return;} } -#line 1836 "runarray.in" +#line 1849 "runarray.in" // real norm(realarray *a); -void gen_runarray68(stack *Stack) +void gen_runarray69(stack *Stack) { realarray * a=vm::pop<realarray *>(Stack); -#line 1837 "runarray.in" +#line 1850 "runarray.in" size_t n=checkArray(a); real M=0.0; for(size_t i=0; i < n; ++i) { @@ -2197,12 +2214,12 @@ void gen_runarray68(stack *Stack) {Stack->push<real>(M); return;} } -#line 1847 "runarray.in" +#line 1860 "runarray.in" // real norm(realarray2 *a); -void gen_runarray69(stack *Stack) +void gen_runarray70(stack *Stack) { realarray2 * a=vm::pop<realarray2 *>(Stack); -#line 1848 "runarray.in" +#line 1861 "runarray.in" size_t n=checkArray(a); real M=0.0; for(size_t i=0; i < n; ++i) { @@ -2216,12 +2233,12 @@ void gen_runarray69(stack *Stack) {Stack->push<real>(M); return;} } -#line 1862 "runarray.in" +#line 1875 "runarray.in" // real norm(triplearray2 *a); -void gen_runarray70(stack *Stack) +void gen_runarray71(stack *Stack) { triplearray2 * a=vm::pop<triplearray2 *>(Stack); -#line 1863 "runarray.in" +#line 1876 "runarray.in" size_t n=checkArray(a); real M=0.0; for(size_t i=0; i < n; ++i) { @@ -2235,12 +2252,12 @@ void gen_runarray70(stack *Stack) {Stack->push<real>(sqrt(M)); return;} } -#line 1877 "runarray.in" +#line 1890 "runarray.in" // real change2(triplearray2 *a); -void gen_runarray71(stack *Stack) +void gen_runarray72(stack *Stack) { triplearray2 * a=vm::pop<triplearray2 *>(Stack); -#line 1878 "runarray.in" +#line 1891 "runarray.in" size_t n=checkArray(a); if(n == 0) {Stack->push<real>(0.0); return;} @@ -2261,13 +2278,13 @@ void gen_runarray71(stack *Stack) {Stack->push<real>(M); return;} } -#line 1899 "runarray.in" +#line 1912 "runarray.in" // triple minbezier(triplearray2 *P, triple b); -void gen_runarray72(stack *Stack) +void gen_runarray73(stack *Stack) { triple b=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); -#line 1900 "runarray.in" +#line 1913 "runarray.in" size_t N; real *A=copyTripleArray2Components(P,N); bound_double *B=bounddouble(N); @@ -2278,13 +2295,13 @@ void gen_runarray72(stack *Stack) {Stack->push<triple>(b); return;} } -#line 1911 "runarray.in" +#line 1924 "runarray.in" // triple maxbezier(triplearray2 *P, triple b); -void gen_runarray73(stack *Stack) +void gen_runarray74(stack *Stack) { triple b=vm::pop<triple>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); -#line 1912 "runarray.in" +#line 1925 "runarray.in" size_t N; real *A=copyTripleArray2Components(P,N); bound_double *B=bounddouble(N); @@ -2295,13 +2312,13 @@ void gen_runarray73(stack *Stack) {Stack->push<triple>(b); return;} } -#line 1923 "runarray.in" +#line 1936 "runarray.in" // pair minratio(triplearray2 *P, pair b); -void gen_runarray74(stack *Stack) +void gen_runarray75(stack *Stack) { pair b=vm::pop<pair>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); -#line 1924 "runarray.in" +#line 1937 "runarray.in" size_t N; triple *A=copyTripleArray2C(P,N); real fuzz=sqrtFuzz*norm(A,N); @@ -2312,13 +2329,13 @@ void gen_runarray74(stack *Stack) {Stack->push<pair>(b); return;} } -#line 1935 "runarray.in" +#line 1948 "runarray.in" // pair maxratio(triplearray2 *P, pair b); -void gen_runarray75(stack *Stack) +void gen_runarray76(stack *Stack) { pair b=vm::pop<pair>(Stack); triplearray2 * P=vm::pop<triplearray2 *>(Stack); -#line 1936 "runarray.in" +#line 1949 "runarray.in" size_t N; triple *A=copyTripleArray2C(P,N); bound_triple *B=boundtriple(N); @@ -2329,11 +2346,11 @@ void gen_runarray75(stack *Stack) {Stack->push<pair>(b); return;} } -#line 1947 "runarray.in" +#line 1960 "runarray.in" // realarray* _projection(); -void gen_runarray76(stack *Stack) +void gen_runarray77(stack *Stack) { -#line 1948 "runarray.in" +#line 1961 "runarray.in" #ifdef HAVE_GL array *a=new array(14); gl::projection P=gl::camera(); @@ -2461,69 +2478,71 @@ void gen_runarray_venv(venv &ve) #line 1105 "runarray.in" addFunc(ve, run::gen_runarray44, primInt(), SYM(find), formal(booleanArray(), SYM(a), false, false), formal(primInt(), SYM(n), true, false)); #line 1124 "runarray.in" + addFunc(ve, run::gen_runarray45, IntArray(), SYM(findall), formal(booleanArray(), SYM(a), false, false)); +#line 1137 "runarray.in" REGISTER_BLTIN(run::arrayConditional,"arrayConditional"); -#line 1150 "runarray.in" - addFunc(ve, run::gen_runarray46, realArray2(), SYM(identity), formal(primInt(), SYM(n), false, false)); -#line 1156 "runarray.in" - addFunc(ve, run::gen_runarray47, realArray2(), SYM(inverse), formal(realArray2(), SYM(a), false, false)); -#line 1168 "runarray.in" - addFunc(ve, run::gen_runarray48, realArray(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false)); -#line 1221 "runarray.in" - addFunc(ve, run::gen_runarray49, realArray2(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false)); -#line 1286 "runarray.in" - addFunc(ve, run::gen_runarray50, primReal(), SYM(determinant), formal(realArray2(), SYM(a), false, false)); -#line 1303 "runarray.in" - addFunc(ve, run::gen_runarray51, realArray(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false)); -#line 1322 "runarray.in" - addFunc(ve, run::gen_runarray52, realArray(), SYM_TIMES, formal(realArray(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false)); -#line 1351 "runarray.in" - addFunc(ve, run::gen_runarray53, IntArray2(), SYM_TIMES, formal(IntArray2(), SYM(a), false, false), formal(IntArray2(), SYM(b), false, false)); -#line 1356 "runarray.in" - addFunc(ve, run::gen_runarray54, realArray2(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false)); -#line 1361 "runarray.in" - addFunc(ve, run::gen_runarray55, pairArray2(), SYM_TIMES, formal(pairArray2(), SYM(a), false, false), formal(pairArray2(), SYM(b), false, false)); -#line 1366 "runarray.in" - addFunc(ve, run::gen_runarray56, primTriple(), SYM_TIMES, formal(realArray2(), SYM(t), false, false), formal(primTriple(), SYM(v), false, false)); -#line 1371 "runarray.in" - addFunc(ve, run::gen_runarray57, realArray2(), SYM(AtA), formal(realArray2(), SYM(a), false, false)); -#line 1376 "runarray.in" - addFunc(ve, run::gen_runarray58, primPair(), SYM(project), formal(primTriple(), SYM(v), false, false), formal(realArray2(), SYM(t), false, false)); -#line 1401 "runarray.in" - addFunc(ve, run::gen_runarray59, primReal(), SYM(dot), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false)); -#line 1411 "runarray.in" - addFunc(ve, run::gen_runarray60, primPair(), SYM(dot), formal(pairArray(), SYM(a), false, false), formal(pairArray(), SYM(b), false, false)); -#line 1421 "runarray.in" - addFunc(ve, run::gen_runarray61, realArray(), SYM(tridiagonal), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(realArray(), SYM(c), false, false), formal(realArray(), SYM(f), false, false)); -#line 1525 "runarray.in" - addFunc(ve, run::gen_runarray62, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x), false, false), formal(primBoolean(), SYM(verbose), true, false)); -#line 1572 "runarray.in" - addFunc(ve, run::gen_runarray63, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x1), false, false), formal(primReal(), SYM(x2), false, false), formal(primBoolean(), SYM(verbose), true, false)); -#line 1654 "runarray.in" - addFunc(ve, run::gen_runarray64, primReal(), SYM(_findroot), formal(realRealFunction(), SYM(f), false, false), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(tolerance), false, false), formal(primReal(), SYM(fa), false, false), formal(primReal(), SYM(fb), false, false)); -#line 1756 "runarray.in" - addFunc(ve, run::gen_runarray65, primReal(), SYM(simpson), formal(realRealFunction(), SYM(f), false, false), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(acc), true, false), formal(primReal(), SYM(dxmax), true, false)); -#line 1770 "runarray.in" - addFunc(ve, run::gen_runarray66, pairArray(), SYM(fft), formal(pairArray(), SYM(a), false, false), formal(primInt(), SYM(sign), true, false)); -#line 1801 "runarray.in" - addFunc(ve, run::gen_runarray67, IntArray2(), SYM(triangulate), formal(pairArray(), SYM(z), false, false)); -#line 1836 "runarray.in" - addFunc(ve, run::gen_runarray68, primReal(), SYM(norm), formal(realArray(), SYM(a), false, false)); -#line 1847 "runarray.in" - addFunc(ve, run::gen_runarray69, primReal(), SYM(norm), formal(realArray2(), SYM(a), false, false)); -#line 1862 "runarray.in" - addFunc(ve, run::gen_runarray70, primReal(), SYM(norm), formal(tripleArray2(), SYM(a), false, false)); -#line 1877 "runarray.in" - addFunc(ve, run::gen_runarray71, primReal(), SYM(change2), formal(tripleArray2(), SYM(a), false, false)); -#line 1899 "runarray.in" - addFunc(ve, run::gen_runarray72, primTriple(), SYM(minbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false)); -#line 1911 "runarray.in" - addFunc(ve, run::gen_runarray73, primTriple(), SYM(maxbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false)); -#line 1923 "runarray.in" - addFunc(ve, run::gen_runarray74, primPair(), SYM(minratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false)); -#line 1935 "runarray.in" - addFunc(ve, run::gen_runarray75, primPair(), SYM(maxratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false)); -#line 1947 "runarray.in" - addFunc(ve, run::gen_runarray76, realArray(), SYM(_projection)); +#line 1163 "runarray.in" + addFunc(ve, run::gen_runarray47, realArray2(), SYM(identity), formal(primInt(), SYM(n), false, false)); +#line 1169 "runarray.in" + addFunc(ve, run::gen_runarray48, realArray2(), SYM(inverse), formal(realArray2(), SYM(a), false, false)); +#line 1181 "runarray.in" + addFunc(ve, run::gen_runarray49, realArray(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false)); +#line 1234 "runarray.in" + addFunc(ve, run::gen_runarray50, realArray2(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false)); +#line 1299 "runarray.in" + addFunc(ve, run::gen_runarray51, primReal(), SYM(determinant), formal(realArray2(), SYM(a), false, false)); +#line 1316 "runarray.in" + addFunc(ve, run::gen_runarray52, realArray(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false)); +#line 1335 "runarray.in" + addFunc(ve, run::gen_runarray53, realArray(), SYM_TIMES, formal(realArray(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false)); +#line 1364 "runarray.in" + addFunc(ve, run::gen_runarray54, IntArray2(), SYM_TIMES, formal(IntArray2(), SYM(a), false, false), formal(IntArray2(), SYM(b), false, false)); +#line 1369 "runarray.in" + addFunc(ve, run::gen_runarray55, realArray2(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false)); +#line 1374 "runarray.in" + addFunc(ve, run::gen_runarray56, pairArray2(), SYM_TIMES, formal(pairArray2(), SYM(a), false, false), formal(pairArray2(), SYM(b), false, false)); +#line 1379 "runarray.in" + addFunc(ve, run::gen_runarray57, primTriple(), SYM_TIMES, formal(realArray2(), SYM(t), false, false), formal(primTriple(), SYM(v), false, false)); +#line 1384 "runarray.in" + addFunc(ve, run::gen_runarray58, realArray2(), SYM(AtA), formal(realArray2(), SYM(a), false, false)); +#line 1389 "runarray.in" + addFunc(ve, run::gen_runarray59, primPair(), SYM(project), formal(primTriple(), SYM(v), false, false), formal(realArray2(), SYM(t), false, false)); +#line 1414 "runarray.in" + addFunc(ve, run::gen_runarray60, primReal(), SYM(dot), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false)); +#line 1424 "runarray.in" + addFunc(ve, run::gen_runarray61, primPair(), SYM(dot), formal(pairArray(), SYM(a), false, false), formal(pairArray(), SYM(b), false, false)); +#line 1434 "runarray.in" + addFunc(ve, run::gen_runarray62, realArray(), SYM(tridiagonal), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(realArray(), SYM(c), false, false), formal(realArray(), SYM(f), false, false)); +#line 1538 "runarray.in" + addFunc(ve, run::gen_runarray63, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x), false, false), formal(primBoolean(), SYM(verbose), true, false)); +#line 1585 "runarray.in" + addFunc(ve, run::gen_runarray64, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x1), false, false), formal(primReal(), SYM(x2), false, false), formal(primBoolean(), SYM(verbose), true, false)); +#line 1667 "runarray.in" + addFunc(ve, run::gen_runarray65, primReal(), SYM(_findroot), formal(realRealFunction(), SYM(f), false, false), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(tolerance), false, false), formal(primReal(), SYM(fa), false, false), formal(primReal(), SYM(fb), false, false)); +#line 1769 "runarray.in" + addFunc(ve, run::gen_runarray66, primReal(), SYM(simpson), formal(realRealFunction(), SYM(f), false, false), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(acc), true, false), formal(primReal(), SYM(dxmax), true, false)); +#line 1783 "runarray.in" + addFunc(ve, run::gen_runarray67, pairArray(), SYM(fft), formal(pairArray(), SYM(a), false, false), formal(primInt(), SYM(sign), true, false)); +#line 1814 "runarray.in" + addFunc(ve, run::gen_runarray68, IntArray2(), SYM(triangulate), formal(pairArray(), SYM(z), false, false)); +#line 1849 "runarray.in" + addFunc(ve, run::gen_runarray69, primReal(), SYM(norm), formal(realArray(), SYM(a), false, false)); +#line 1860 "runarray.in" + addFunc(ve, run::gen_runarray70, primReal(), SYM(norm), formal(realArray2(), SYM(a), false, false)); +#line 1875 "runarray.in" + addFunc(ve, run::gen_runarray71, primReal(), SYM(norm), formal(tripleArray2(), SYM(a), false, false)); +#line 1890 "runarray.in" + addFunc(ve, run::gen_runarray72, primReal(), SYM(change2), formal(tripleArray2(), SYM(a), false, false)); +#line 1912 "runarray.in" + addFunc(ve, run::gen_runarray73, primTriple(), SYM(minbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false)); +#line 1924 "runarray.in" + addFunc(ve, run::gen_runarray74, primTriple(), SYM(maxbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false)); +#line 1936 "runarray.in" + addFunc(ve, run::gen_runarray75, primPair(), SYM(minratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false)); +#line 1948 "runarray.in" + addFunc(ve, run::gen_runarray76, primPair(), SYM(maxratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false)); +#line 1960 "runarray.in" + addFunc(ve, run::gen_runarray77, realArray(), SYM(_projection)); } } // namespace trans diff --git a/Build/source/utils/asymptote/runarray.in b/Build/source/utils/asymptote/runarray.in index a5e4692247f..0f1502f6abb 100644 --- a/Build/source/utils/asymptote/runarray.in +++ b/Build/source/utils/asymptote/runarray.in @@ -1102,7 +1102,7 @@ array* :array3Transpose(array *a, array *perm) return c; } -// In a boolean array, find the index of the nth true value or -1 if not found +// Find the index of the nth true value in a boolean array or -1 if not found. // If n is negative, search backwards. Int find(boolarray *a, Int n=1) { @@ -1121,6 +1121,19 @@ Int find(boolarray *a, Int n=1) return j; } +// Find all indices of true values in a boolean array. +Intarray *findall(boolarray *a) +{ + size_t size=checkArray(a); + array *b=new array(0); + for(size_t i=0; i < size; i++) { + if(read<bool>(a,i)) { + b->push((Int) i); + } + } + return b; +} + // construct vector obtained by replacing those elements of b for which the // corresponding elements of a are false by the corresponding element of c. array* :arrayConditional(array *a, array *b, array *c) diff --git a/Build/source/utils/asymptote/runlabel.cc b/Build/source/utils/asymptote/runlabel.cc index 04425513b37..1f7ea7417e1 100644 --- a/Build/source/utils/asymptote/runlabel.cc +++ b/Build/source/utils/asymptote/runlabel.cc @@ -182,7 +182,6 @@ array *readpath(const string& psname, bool keep, bool pdf=false, mem::vector<solvedKnot> nodes; solvedKnot node; - bool cyclic=false; bool active=false; array *P=new array(0); @@ -196,28 +195,6 @@ array *readpath(const string& psname, bool keep, bool pdf=false, switch(c) { case 'M': { - if(active) { - if(cyclic) { - if(node.point == nodes[0].point) - nodes[0].pre=node.pre; - else { - pair delta=(nodes[0].point-node.point)*third; - node.post=node.point+delta; - nodes[0].pre=nodes[0].point-delta; - node.straight=true; - nodes.push_back(node); - } - } else { - node.post=node.point; - node.straight=false; - nodes.push_back(node); - } - if(cyclic) // Discard noncyclic paths. - P->push(path(nodes,nodes.size(),cyclic)); - nodes.clear(); - } - active=false; - cyclic=false; node.pre=node.point=readpair(buf,hscale,vscale); node.straight=false; break; @@ -248,7 +225,21 @@ array *readpath(const string& psname, bool keep, bool pdf=false, } case 'c': { - cyclic=true; + if(active) { + if(node.point == nodes[0].point) + nodes[0].pre=node.pre; + else { + pair delta=(nodes[0].point-node.point)*third; + node.post=node.point+delta; + nodes[0].pre=nodes[0].point-delta; + node.straight=true; + nodes.push_back(node); + } + P->push(path(nodes,nodes.size(),true)); // Discard noncyclic paths + nodes.clear(); + } + active=false; + node.straight=false; break; } } @@ -272,7 +263,7 @@ array *readpath(const string& psname, bool keep, bool pdf=false, #endif namespace run { -#line 223 "runlabel.in" +#line 214 "runlabel.in" // void label(picture *f, string *s, string *size, transform t, pair position, pair align, pen p); void gen_runlabel0(stack *Stack) { @@ -283,26 +274,26 @@ void gen_runlabel0(stack *Stack) string * size=vm::pop<string *>(Stack); string * s=vm::pop<string *>(Stack); picture * f=vm::pop<picture *>(Stack); -#line 225 "runlabel.in" +#line 216 "runlabel.in" f->append(new drawLabel(*s,*size,t,position,align,p)); } -#line 229 "runlabel.in" +#line 220 "runlabel.in" // bool labels(picture *f); void gen_runlabel1(stack *Stack) { picture * f=vm::pop<picture *>(Stack); -#line 230 "runlabel.in" +#line 221 "runlabel.in" {Stack->push<bool>(f->havelabels()); return;} } -#line 234 "runlabel.in" +#line 225 "runlabel.in" // realarray* texsize(string *s, pen p=CURRENTPEN); void gen_runlabel2(stack *Stack) { pen p=vm::pop<pen>(Stack,CURRENTPEN); string * s=vm::pop<string *>(Stack); -#line 235 "runlabel.in" +#line 226 "runlabel.in" texinit(); processDataStruct &pd=processData(); @@ -319,13 +310,13 @@ void gen_runlabel2(stack *Stack) {Stack->push<realarray*>(t); return;} } -#line 252 "runlabel.in" +#line 243 "runlabel.in" // patharray2* _texpath(stringarray *s, penarray *p); void gen_runlabel3(stack *Stack) { penarray * p=vm::pop<penarray *>(Stack); stringarray * s=vm::pop<stringarray *>(Stack); -#line 253 "runlabel.in" +#line 244 "runlabel.in" size_t n=checkArrays(s,p); if(n == 0) {Stack->push<patharray2*>(new array(0)); return;} @@ -468,13 +459,13 @@ void gen_runlabel3(stack *Stack) readpath(psname,keep,false,0.12,-1.0)); return;} } -#line 396 "runlabel.in" +#line 387 "runlabel.in" // patharray2* textpath(stringarray *s, penarray *p); void gen_runlabel4(stack *Stack) { penarray * p=vm::pop<penarray *>(Stack); stringarray * s=vm::pop<stringarray *>(Stack); -#line 397 "runlabel.in" +#line 388 "runlabel.in" size_t n=checkArrays(s,p); if(n == 0) {Stack->push<patharray2*>(new array(0)); return;} @@ -547,13 +538,13 @@ void gen_runlabel4(stack *Stack) {Stack->push<patharray2*>(readpath(psname,keep,false,0.1)); return;} } -#line 470 "runlabel.in" +#line 461 "runlabel.in" // patharray* _strokepath(path g, pen p=CURRENTPEN); void gen_runlabel5(stack *Stack) { pen p=vm::pop<pen>(Stack,CURRENTPEN); path g=vm::pop<path>(Stack); -#line 471 "runlabel.in" +#line 462 "runlabel.in" array *P=new array(0); if(g.size() == 0) {Stack->push<patharray*>(P); return;} @@ -583,17 +574,17 @@ namespace trans { void gen_runlabel_venv(venv &ve) { -#line 223 "runlabel.in" +#line 214 "runlabel.in" addFunc(ve, run::gen_runlabel0, primVoid(), SYM(label), formal(primPicture(), SYM(f), false, false), formal(primString(), SYM(s), false, false), formal(primString(), SYM(size), false, false), formal(primTransform(), SYM(t), false, false), formal(primPair(), SYM(position), false, false), formal(primPair(), SYM(align), false, false), formal(primPen(), SYM(p), false, false)); -#line 229 "runlabel.in" +#line 220 "runlabel.in" addFunc(ve, run::gen_runlabel1, primBoolean(), SYM(labels), formal(primPicture(), SYM(f), false, false)); -#line 234 "runlabel.in" +#line 225 "runlabel.in" addFunc(ve, run::gen_runlabel2, realArray(), SYM(texsize), formal(primString(), SYM(s), false, false), formal(primPen(), SYM(p), true, false)); -#line 252 "runlabel.in" +#line 243 "runlabel.in" addFunc(ve, run::gen_runlabel3, pathArray2() , SYM(_texpath), formal(stringArray() , SYM(s), false, false), formal(penArray() , SYM(p), false, false)); -#line 396 "runlabel.in" +#line 387 "runlabel.in" addFunc(ve, run::gen_runlabel4, pathArray2() , SYM(textpath), formal(stringArray() , SYM(s), false, false), formal(penArray() , SYM(p), false, false)); -#line 470 "runlabel.in" +#line 461 "runlabel.in" addFunc(ve, run::gen_runlabel5, pathArray() , SYM(_strokepath), formal(primPath(), SYM(g), false, false), formal(primPen(), SYM(p), true, false)); } diff --git a/Build/source/utils/asymptote/runlabel.in b/Build/source/utils/asymptote/runlabel.in index f1ddab9f2d3..9503a0b0ee8 100644 --- a/Build/source/utils/asymptote/runlabel.in +++ b/Build/source/utils/asymptote/runlabel.in @@ -136,7 +136,6 @@ array *readpath(const string& psname, bool keep, bool pdf=false, mem::vector<solvedKnot> nodes; solvedKnot node; - bool cyclic=false; bool active=false; array *P=new array(0); @@ -150,28 +149,6 @@ array *readpath(const string& psname, bool keep, bool pdf=false, switch(c) { case 'M': { - if(active) { - if(cyclic) { - if(node.point == nodes[0].point) - nodes[0].pre=node.pre; - else { - pair delta=(nodes[0].point-node.point)*third; - node.post=node.point+delta; - nodes[0].pre=nodes[0].point-delta; - node.straight=true; - nodes.push_back(node); - } - } else { - node.post=node.point; - node.straight=false; - nodes.push_back(node); - } - if(cyclic) // Discard noncyclic paths. - P->push(path(nodes,nodes.size(),cyclic)); - nodes.clear(); - } - active=false; - cyclic=false; node.pre=node.point=readpair(buf,hscale,vscale); node.straight=false; break; @@ -202,7 +179,21 @@ array *readpath(const string& psname, bool keep, bool pdf=false, } case 'c': { - cyclic=true; + if(active) { + if(node.point == nodes[0].point) + nodes[0].pre=node.pre; + else { + pair delta=(nodes[0].point-node.point)*third; + node.post=node.point+delta; + nodes[0].pre=nodes[0].point-delta; + node.straight=true; + nodes.push_back(node); + } + P->push(path(nodes,nodes.size(),true)); // Discard noncyclic paths + nodes.clear(); + } + active=false; + node.straight=false; break; } } diff --git a/Build/source/utils/asymptote/runmath.cc b/Build/source/utils/asymptote/runmath.cc index 14b4a980b57..4461bbd28d2 100644 --- a/Build/source/utils/asymptote/runmath.cc +++ b/Build/source/utils/asymptote/runmath.cc @@ -87,6 +87,118 @@ const char *invalidargument="invalid argument"; extern uint32_t CLZ(uint32_t a); +inline unsigned intbits() { + static unsigned count=0; + if(count > 0) return count; + while((1UL << count) < Int_MAX) + ++count; + ++count; + return count; +} + +static const unsigned char BitReverseTable8[256]= +{ +#define R2(n) n, n+2*64, n+1*64, n+3*64 +#define R4(n) R2(n),R2(n+2*16),R2(n+1*16),R2(n+3*16) +#define R6(n) R4(n),R4(n+2*4 ),R4(n+1*4 ),R4(n+3*4 ) +R6(0),R6(2),R6(1),R6(3) +}; +#undef R2 +#undef R4 +#undef R6 + +unsigned long long bitreverse8(unsigned long long a) +{ + return + (unsigned long long) BitReverseTable8[a]; +} + +unsigned long long bitreverse16(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 8)]); +} + +unsigned long long bitreverse24(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 16)]); +} + +unsigned long long bitreverse32(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 24)]); +} + +unsigned long long bitreverse40(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 32)]); +} + +unsigned long long bitreverse48(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 40) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 32) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 40)]); +} + +unsigned long long bitreverse56(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 48) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 40) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 32) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 40) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 48)]); +} + +unsigned long long bitreverse64(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 56) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 48) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 40) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 32) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 40) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 48) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 56)]); +} + +// From Warren, Jr., Henry S. (2013) [2002]. Hacker's Delight (2 ed.). +// Addison Wesley - Pearson Education, Inc. pp. 81-96. +Int popcount(Int a) +{ + const uint64_t m1 = 0x5555555555555555; //binary: 0101... + const uint64_t m2 = 0x3333333333333333; //binary: 00110011.. + const uint64_t m4 = 0x0f0f0f0f0f0f0f0f; //binary: 4 zeros, 4 ones ... + const uint64_t h01 = 0x0101010101010101; //the sum of 256 to the power of 0,1,2,3... + +// This algorithm uses 12 arithmetic operations, one of which is a multiply. + a -= (a >> 1) & m1; //put count of each 2 bits into those 2 bits + a=(a & m2)+((a >> 2) & m2); //put count of each 4 bits into those 4 bits + a=(a+(a >> 4)) & m4; //put count of each 8 bits into those 8 bits + return (a * h01) >> 56; //returns left 8 bits of a+(a << 8)+(a << 16)+(a << 24)+... +} + // Return the factorial of a non-negative integer using a lookup table. Int factorial(Int n) { @@ -137,233 +249,233 @@ void Srand(Int seed) #endif namespace run { -#line 81 "runmath.in" +#line 193 "runmath.in" // real ^(real x, Int y); void gen_runmath0(stack *Stack) { Int y=vm::pop<Int>(Stack); real x=vm::pop<real>(Stack); -#line 82 "runmath.in" +#line 194 "runmath.in" {Stack->push<real>(pow(x,y)); return;} } -#line 86 "runmath.in" +#line 198 "runmath.in" // pair ^(pair z, Int y); void gen_runmath1(stack *Stack) { Int y=vm::pop<Int>(Stack); pair z=vm::pop<pair>(Stack); -#line 87 "runmath.in" +#line 199 "runmath.in" {Stack->push<pair>(pow(z,y)); return;} } -#line 91 "runmath.in" +#line 203 "runmath.in" // Int quotient(Int x, Int y); void gen_runmath2(stack *Stack) { Int y=vm::pop<Int>(Stack); Int x=vm::pop<Int>(Stack); -#line 92 "runmath.in" +#line 204 "runmath.in" {Stack->push<Int>(quotient<Int>()(x,y)); return;} } -#line 96 "runmath.in" +#line 208 "runmath.in" // Int abs(Int x); void gen_runmath3(stack *Stack) { Int x=vm::pop<Int>(Stack); -#line 97 "runmath.in" +#line 209 "runmath.in" {Stack->push<Int>(Abs(x)); return;} } -#line 101 "runmath.in" +#line 213 "runmath.in" // Int sgn(real x); void gen_runmath4(stack *Stack) { real x=vm::pop<real>(Stack); -#line 102 "runmath.in" +#line 214 "runmath.in" {Stack->push<Int>(sgn(x)); return;} } -#line 106 "runmath.in" +#line 218 "runmath.in" // Int rand(); void gen_runmath5(stack *Stack) { -#line 107 "runmath.in" +#line 219 "runmath.in" if(initializeRandom) Srand(1); {Stack->push<Int>(random()); return;} } -#line 113 "runmath.in" +#line 225 "runmath.in" // void srand(Int seed); void gen_runmath6(stack *Stack) { Int seed=vm::pop<Int>(Stack); -#line 114 "runmath.in" +#line 226 "runmath.in" Srand(seed); } // a random number uniformly distributed in the interval [0,1] -#line 119 "runmath.in" +#line 231 "runmath.in" // real unitrand(); void gen_runmath7(stack *Stack) { -#line 120 "runmath.in" +#line 232 "runmath.in" {Stack->push<real>(((real) random())/RANDOM_MAX); return;} } -#line 124 "runmath.in" +#line 236 "runmath.in" // Int ceil(real x); void gen_runmath8(stack *Stack) { real x=vm::pop<real>(Stack); -#line 125 "runmath.in" +#line 237 "runmath.in" {Stack->push<Int>(Intcast(ceil(x))); return;} } -#line 129 "runmath.in" +#line 241 "runmath.in" // Int floor(real x); void gen_runmath9(stack *Stack) { real x=vm::pop<real>(Stack); -#line 130 "runmath.in" +#line 242 "runmath.in" {Stack->push<Int>(Intcast(floor(x))); return;} } -#line 134 "runmath.in" +#line 246 "runmath.in" // Int round(real x); void gen_runmath10(stack *Stack) { real x=vm::pop<real>(Stack); -#line 135 "runmath.in" +#line 247 "runmath.in" if(validInt(x)) {Stack->push<Int>(Round(x)); return;} integeroverflow(0); } -#line 140 "runmath.in" +#line 252 "runmath.in" // Int Ceil(real x); void gen_runmath11(stack *Stack) { real x=vm::pop<real>(Stack); -#line 141 "runmath.in" +#line 253 "runmath.in" {Stack->push<Int>(Ceil(x)); return;} } -#line 145 "runmath.in" +#line 257 "runmath.in" // Int Floor(real x); void gen_runmath12(stack *Stack) { real x=vm::pop<real>(Stack); -#line 146 "runmath.in" +#line 258 "runmath.in" {Stack->push<Int>(Floor(x)); return;} } -#line 150 "runmath.in" +#line 262 "runmath.in" // Int Round(real x); void gen_runmath13(stack *Stack) { real x=vm::pop<real>(Stack); -#line 151 "runmath.in" +#line 263 "runmath.in" {Stack->push<Int>(Round(Intcap(x))); return;} } -#line 155 "runmath.in" +#line 267 "runmath.in" // real fmod(real x, real y); void gen_runmath14(stack *Stack) { real y=vm::pop<real>(Stack); real x=vm::pop<real>(Stack); -#line 156 "runmath.in" +#line 268 "runmath.in" if (y == 0.0) dividebyzero(); {Stack->push<real>(fmod(x,y)); return;} } -#line 161 "runmath.in" +#line 273 "runmath.in" // real atan2(real y, real x); void gen_runmath15(stack *Stack) { real x=vm::pop<real>(Stack); real y=vm::pop<real>(Stack); -#line 162 "runmath.in" +#line 274 "runmath.in" {Stack->push<real>(atan2(y,x)); return;} } -#line 166 "runmath.in" +#line 278 "runmath.in" // real hypot(real x, real y); void gen_runmath16(stack *Stack) { real y=vm::pop<real>(Stack); real x=vm::pop<real>(Stack); -#line 167 "runmath.in" +#line 279 "runmath.in" {Stack->push<real>(hypot(x,y)); return;} } -#line 171 "runmath.in" +#line 283 "runmath.in" // real remainder(real x, real y); void gen_runmath17(stack *Stack) { real y=vm::pop<real>(Stack); real x=vm::pop<real>(Stack); -#line 172 "runmath.in" +#line 284 "runmath.in" {Stack->push<real>(remainder(x,y)); return;} } -#line 176 "runmath.in" +#line 288 "runmath.in" // real Jn(Int n, real x); void gen_runmath18(stack *Stack) { real x=vm::pop<real>(Stack); Int n=vm::pop<Int>(Stack); -#line 177 "runmath.in" +#line 289 "runmath.in" {Stack->push<real>(jn(n,x)); return;} } -#line 181 "runmath.in" +#line 293 "runmath.in" // real Yn(Int n, real x); void gen_runmath19(stack *Stack) { real x=vm::pop<real>(Stack); Int n=vm::pop<Int>(Stack); -#line 182 "runmath.in" +#line 294 "runmath.in" {Stack->push<real>(yn(n,x)); return;} } -#line 186 "runmath.in" +#line 298 "runmath.in" // real erf(real x); void gen_runmath20(stack *Stack) { real x=vm::pop<real>(Stack); -#line 187 "runmath.in" +#line 299 "runmath.in" {Stack->push<real>(erf(x)); return;} } -#line 191 "runmath.in" +#line 303 "runmath.in" // real erfc(real x); void gen_runmath21(stack *Stack) { real x=vm::pop<real>(Stack); -#line 192 "runmath.in" +#line 304 "runmath.in" {Stack->push<real>(erfc(x)); return;} } -#line 196 "runmath.in" +#line 308 "runmath.in" // Int factorial(Int n); void gen_runmath22(stack *Stack) { Int n=vm::pop<Int>(Stack); -#line 197 "runmath.in" +#line 309 "runmath.in" if(n < 0) error(invalidargument); {Stack->push<Int>(factorial(n)); return;} } -#line 201 "runmath.in" +#line 313 "runmath.in" // Int choose(Int n, Int k); void gen_runmath23(stack *Stack) { Int k=vm::pop<Int>(Stack); Int n=vm::pop<Int>(Stack); -#line 202 "runmath.in" +#line 314 "runmath.in" if(n < 0 || k < 0 || k > n) error(invalidargument); Int f=1; Int r=n-k; @@ -374,12 +486,12 @@ void gen_runmath23(stack *Stack) {Stack->push<Int>(f); return;} } -#line 212 "runmath.in" +#line 324 "runmath.in" // real gamma(real x); void gen_runmath24(stack *Stack) { real x=vm::pop<real>(Stack); -#line 213 "runmath.in" +#line 325 "runmath.in" #ifdef HAVE_TGAMMA {Stack->push<real>(tgamma(x)); return;} #else @@ -388,14 +500,14 @@ void gen_runmath24(stack *Stack) #endif } -#line 222 "runmath.in" +#line 334 "runmath.in" // realarray* quadraticroots(real a, real b, real c); void gen_runmath25(stack *Stack) { real c=vm::pop<real>(Stack); real b=vm::pop<real>(Stack); real a=vm::pop<real>(Stack); -#line 223 "runmath.in" +#line 335 "runmath.in" quadraticroots q(a,b,c); array *roots=new array(q.roots); if(q.roots >= 1) (*roots)[0]=q.t1; @@ -403,14 +515,14 @@ void gen_runmath25(stack *Stack) {Stack->push<realarray*>(roots); return;} } -#line 231 "runmath.in" +#line 343 "runmath.in" // pairarray* quadraticroots(explicit pair a, explicit pair b, explicit pair c); void gen_runmath26(stack *Stack) { pair c=vm::pop<pair>(Stack); pair b=vm::pop<pair>(Stack); pair a=vm::pop<pair>(Stack); -#line 232 "runmath.in" +#line 344 "runmath.in" Quadraticroots q(a,b,c); array *roots=new array(q.roots); if(q.roots >= 1) (*roots)[0]=q.z1; @@ -418,7 +530,7 @@ void gen_runmath26(stack *Stack) {Stack->push<pairarray*>(roots); return;} } -#line 240 "runmath.in" +#line 352 "runmath.in" // realarray* cubicroots(real a, real b, real c, real d); void gen_runmath27(stack *Stack) { @@ -426,7 +538,7 @@ void gen_runmath27(stack *Stack) real c=vm::pop<real>(Stack); real b=vm::pop<real>(Stack); real a=vm::pop<real>(Stack); -#line 241 "runmath.in" +#line 353 "runmath.in" cubicroots q(a,b,c,d); array *roots=new array(q.roots); if(q.roots >= 1) (*roots)[0]=q.t1; @@ -437,120 +549,145 @@ void gen_runmath27(stack *Stack) // Logical operations -#line 252 "runmath.in" +#line 364 "runmath.in" // bool !(bool b); void gen_runmath28(stack *Stack) { bool b=vm::pop<bool>(Stack); -#line 253 "runmath.in" +#line 365 "runmath.in" {Stack->push<bool>(!b); return;} } -#line 258 "runmath.in" +#line 370 "runmath.in" void boolMemEq(stack *Stack) { frame * b=vm::pop<frame *>(Stack); frame * a=vm::pop<frame *>(Stack); -#line 259 "runmath.in" +#line 371 "runmath.in" {Stack->push<bool>(a == b); return;} } -#line 263 "runmath.in" +#line 375 "runmath.in" void boolMemNeq(stack *Stack) { frame * b=vm::pop<frame *>(Stack); frame * a=vm::pop<frame *>(Stack); -#line 264 "runmath.in" +#line 376 "runmath.in" {Stack->push<bool>(a != b); return;} } -#line 268 "runmath.in" +#line 380 "runmath.in" void boolFuncEq(stack *Stack) { callable * b=vm::pop<callable *>(Stack); callable * a=vm::pop<callable *>(Stack); -#line 269 "runmath.in" +#line 381 "runmath.in" {Stack->push<bool>(a->compare(b)); return;} } -#line 273 "runmath.in" +#line 385 "runmath.in" void boolFuncNeq(stack *Stack) { callable * b=vm::pop<callable *>(Stack); callable * a=vm::pop<callable *>(Stack); -#line 274 "runmath.in" +#line 386 "runmath.in" {Stack->push<bool>(!(a->compare(b))); return;} } // Bit operations -#line 280 "runmath.in" +#line 392 "runmath.in" // Int AND(Int a, Int b); void gen_runmath33(stack *Stack) { Int b=vm::pop<Int>(Stack); Int a=vm::pop<Int>(Stack); -#line 281 "runmath.in" +#line 393 "runmath.in" {Stack->push<Int>(a & b); return;} } -#line 286 "runmath.in" +#line 398 "runmath.in" // Int OR(Int a, Int b); void gen_runmath34(stack *Stack) { Int b=vm::pop<Int>(Stack); Int a=vm::pop<Int>(Stack); -#line 287 "runmath.in" +#line 399 "runmath.in" {Stack->push<Int>(a | b); return;} } -#line 291 "runmath.in" +#line 403 "runmath.in" // Int XOR(Int a, Int b); void gen_runmath35(stack *Stack) { Int b=vm::pop<Int>(Stack); Int a=vm::pop<Int>(Stack); -#line 292 "runmath.in" +#line 404 "runmath.in" {Stack->push<Int>(a ^ b); return;} } -#line 296 "runmath.in" +#line 408 "runmath.in" // Int NOT(Int a); void gen_runmath36(stack *Stack) { Int a=vm::pop<Int>(Stack); -#line 297 "runmath.in" +#line 409 "runmath.in" {Stack->push<Int>(~a); return;} } -#line 301 "runmath.in" +#line 413 "runmath.in" // Int CLZ(Int a); void gen_runmath37(stack *Stack) { Int a=vm::pop<Int>(Stack); -#line 302 "runmath.in" - if((uint32_t) a > 0xFFFFFFFF) {Stack->push<Int>(-1); return;} - {Stack->push<Int>(CLZ((uint32_t) a)); return;} +#line 414 "runmath.in" + if((unsignedInt) a > 0xFFFFFFFF) + {Stack->push<Int>(CLZ((uint32_t) (a >> 32))); return;} + else { + int bits=intbits(); + if(a != 0) {Stack->push<Int>(bits-32+CLZ((uint32_t) a)); return;} + {Stack->push<Int>(bits); return;} + } } -#line 307 "runmath.in" -// Int CTZ(Int a); +#line 424 "runmath.in" +// Int popcount(Int a); void gen_runmath38(stack *Stack) { Int a=vm::pop<Int>(Stack); -#line 308 "runmath.in" - if((uint32_t) a > 0xFFFFFFFF) {Stack->push<Int>(-1); return;} -#if __GNUC__ - {Stack->push<Int>(__builtin_ctz(a)); return;} -#else - // find the number of trailing zeros in a 32-bit number - static const int MultiplyDeBruijnBitPosition[32] = { - 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, - 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9 - }; - {Stack->push<Int>(MultiplyDeBruijnBitPosition[((uint32_t)((a & -a) * 0x077CB531U)) - >> 27]); return;} -#endif +#line 425 "runmath.in" + {Stack->push<Int>(popcount(a)); return;} +} + +#line 429 "runmath.in" +// Int CTZ(Int a); +void gen_runmath39(stack *Stack) +{ + Int a=vm::pop<Int>(Stack); +#line 430 "runmath.in" + {Stack->push<Int>(popcount((a&-a)-1)); return;} +} + +// bitreverse a within a word of length bits. +#line 435 "runmath.in" +// Int bitreverse(Int a, Int bits); +void gen_runmath40(stack *Stack) +{ + Int bits=vm::pop<Int>(Stack); + Int a=vm::pop<Int>(Stack); +#line 436 "runmath.in" + typedef unsigned long long Bitreverse(unsigned long long a); + static Bitreverse *B[]={bitreverse8,bitreverse16,bitreverse24,bitreverse32, + bitreverse40,bitreverse48,bitreverse56,bitreverse64}; + int maxbits=intbits()-1; // Drop sign bit +#if Int_MAX2 >= 0x7fffffffffffffffLL + --maxbits; // Drop extra bit for reserved values +#endif + if(bits <= 0 || bits > maxbits || a < 0 || + (unsigned long long) a >= (1ULL << bits)) + {Stack->push<Int>(-1); return;} + unsigned int bytes=(bits+7)/8; + {Stack->push<Int>(B[bytes-1]((unsigned long long) a) >> (8*bytes-bits)); return;} } } // namespace run @@ -559,84 +696,88 @@ namespace trans { void gen_runmath_venv(venv &ve) { -#line 81 "runmath.in" +#line 193 "runmath.in" addFunc(ve, run::gen_runmath0, primReal(), SYM_CARET, formal(primReal(), SYM(x), false, false), formal(primInt(), SYM(y), false, false)); -#line 86 "runmath.in" +#line 198 "runmath.in" addFunc(ve, run::gen_runmath1, primPair(), SYM_CARET, formal(primPair(), SYM(z), false, false), formal(primInt(), SYM(y), false, false)); -#line 91 "runmath.in" +#line 203 "runmath.in" addFunc(ve, run::gen_runmath2, primInt(), SYM(quotient), formal(primInt(), SYM(x), false, false), formal(primInt(), SYM(y), false, false)); -#line 96 "runmath.in" +#line 208 "runmath.in" addFunc(ve, run::gen_runmath3, primInt(), SYM(abs), formal(primInt(), SYM(x), false, false)); -#line 101 "runmath.in" +#line 213 "runmath.in" addFunc(ve, run::gen_runmath4, primInt(), SYM(sgn), formal(primReal(), SYM(x), false, false)); -#line 106 "runmath.in" +#line 218 "runmath.in" addFunc(ve, run::gen_runmath5, primInt(), SYM(rand)); -#line 113 "runmath.in" +#line 225 "runmath.in" addFunc(ve, run::gen_runmath6, primVoid(), SYM(srand), formal(primInt(), SYM(seed), false, false)); -#line 118 "runmath.in" +#line 230 "runmath.in" addFunc(ve, run::gen_runmath7, primReal(), SYM(unitrand)); -#line 124 "runmath.in" +#line 236 "runmath.in" addFunc(ve, run::gen_runmath8, primInt(), SYM(ceil), formal(primReal(), SYM(x), false, false)); -#line 129 "runmath.in" +#line 241 "runmath.in" addFunc(ve, run::gen_runmath9, primInt(), SYM(floor), formal(primReal(), SYM(x), false, false)); -#line 134 "runmath.in" +#line 246 "runmath.in" addFunc(ve, run::gen_runmath10, primInt(), SYM(round), formal(primReal(), SYM(x), false, false)); -#line 140 "runmath.in" +#line 252 "runmath.in" addFunc(ve, run::gen_runmath11, primInt(), SYM(Ceil), formal(primReal(), SYM(x), false, false)); -#line 145 "runmath.in" +#line 257 "runmath.in" addFunc(ve, run::gen_runmath12, primInt(), SYM(Floor), formal(primReal(), SYM(x), false, false)); -#line 150 "runmath.in" +#line 262 "runmath.in" addFunc(ve, run::gen_runmath13, primInt(), SYM(Round), formal(primReal(), SYM(x), false, false)); -#line 155 "runmath.in" +#line 267 "runmath.in" addFunc(ve, run::gen_runmath14, primReal(), SYM(fmod), formal(primReal(), SYM(x), false, false), formal(primReal(), SYM(y), false, false)); -#line 161 "runmath.in" +#line 273 "runmath.in" addFunc(ve, run::gen_runmath15, primReal(), SYM(atan2), formal(primReal(), SYM(y), false, false), formal(primReal(), SYM(x), false, false)); -#line 166 "runmath.in" +#line 278 "runmath.in" addFunc(ve, run::gen_runmath16, primReal(), SYM(hypot), formal(primReal(), SYM(x), false, false), formal(primReal(), SYM(y), false, false)); -#line 171 "runmath.in" +#line 283 "runmath.in" addFunc(ve, run::gen_runmath17, primReal(), SYM(remainder), formal(primReal(), SYM(x), false, false), formal(primReal(), SYM(y), false, false)); -#line 176 "runmath.in" +#line 288 "runmath.in" addFunc(ve, run::gen_runmath18, primReal(), SYM(Jn), formal(primInt(), SYM(n), false, false), formal(primReal(), SYM(x), false, false)); -#line 181 "runmath.in" +#line 293 "runmath.in" addFunc(ve, run::gen_runmath19, primReal(), SYM(Yn), formal(primInt(), SYM(n), false, false), formal(primReal(), SYM(x), false, false)); -#line 186 "runmath.in" +#line 298 "runmath.in" addFunc(ve, run::gen_runmath20, primReal(), SYM(erf), formal(primReal(), SYM(x), false, false)); -#line 191 "runmath.in" +#line 303 "runmath.in" addFunc(ve, run::gen_runmath21, primReal(), SYM(erfc), formal(primReal(), SYM(x), false, false)); -#line 196 "runmath.in" +#line 308 "runmath.in" addFunc(ve, run::gen_runmath22, primInt(), SYM(factorial), formal(primInt(), SYM(n), false, false)); -#line 201 "runmath.in" +#line 313 "runmath.in" addFunc(ve, run::gen_runmath23, primInt(), SYM(choose), formal(primInt(), SYM(n), false, false), formal(primInt(), SYM(k), false, false)); -#line 212 "runmath.in" +#line 324 "runmath.in" addFunc(ve, run::gen_runmath24, primReal(), SYM(gamma), formal(primReal(), SYM(x), false, false)); -#line 222 "runmath.in" +#line 334 "runmath.in" addFunc(ve, run::gen_runmath25, realArray(), SYM(quadraticroots), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(c), false, false)); -#line 231 "runmath.in" +#line 343 "runmath.in" addFunc(ve, run::gen_runmath26, pairArray(), SYM(quadraticroots), formal(primPair(), SYM(a), false, true), formal(primPair(), SYM(b), false, true), formal(primPair(), SYM(c), false, true)); -#line 240 "runmath.in" +#line 352 "runmath.in" addFunc(ve, run::gen_runmath27, realArray(), SYM(cubicroots), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(c), false, false), formal(primReal(), SYM(d), false, false)); -#line 250 "runmath.in" +#line 362 "runmath.in" addFunc(ve, run::gen_runmath28, primBoolean(), SYM_LOGNOT, formal(primBoolean(), SYM(b), false, false)); -#line 258 "runmath.in" +#line 370 "runmath.in" REGISTER_BLTIN(run::boolMemEq,"boolMemEq"); -#line 263 "runmath.in" +#line 375 "runmath.in" REGISTER_BLTIN(run::boolMemNeq,"boolMemNeq"); -#line 268 "runmath.in" +#line 380 "runmath.in" REGISTER_BLTIN(run::boolFuncEq,"boolFuncEq"); -#line 273 "runmath.in" +#line 385 "runmath.in" REGISTER_BLTIN(run::boolFuncNeq,"boolFuncNeq"); -#line 278 "runmath.in" +#line 390 "runmath.in" addFunc(ve, run::gen_runmath33, primInt(), SYM(AND), formal(primInt(), SYM(a), false, false), formal(primInt(), SYM(b), false, false)); -#line 286 "runmath.in" +#line 398 "runmath.in" addFunc(ve, run::gen_runmath34, primInt(), SYM(OR), formal(primInt(), SYM(a), false, false), formal(primInt(), SYM(b), false, false)); -#line 291 "runmath.in" +#line 403 "runmath.in" addFunc(ve, run::gen_runmath35, primInt(), SYM(XOR), formal(primInt(), SYM(a), false, false), formal(primInt(), SYM(b), false, false)); -#line 296 "runmath.in" +#line 408 "runmath.in" addFunc(ve, run::gen_runmath36, primInt(), SYM(NOT), formal(primInt(), SYM(a), false, false)); -#line 301 "runmath.in" +#line 413 "runmath.in" addFunc(ve, run::gen_runmath37, primInt(), SYM(CLZ), formal(primInt(), SYM(a), false, false)); -#line 307 "runmath.in" - addFunc(ve, run::gen_runmath38, primInt(), SYM(CTZ), formal(primInt(), SYM(a), false, false)); +#line 424 "runmath.in" + addFunc(ve, run::gen_runmath38, primInt(), SYM(popcount), formal(primInt(), SYM(a), false, false)); +#line 429 "runmath.in" + addFunc(ve, run::gen_runmath39, primInt(), SYM(CTZ), formal(primInt(), SYM(a), false, false)); +#line 434 "runmath.in" + addFunc(ve, run::gen_runmath40, primInt(), SYM(bitreverse), formal(primInt(), SYM(a), false, false), formal(primInt(), SYM(bits), false, false)); } } // namespace trans diff --git a/Build/source/utils/asymptote/runmath.in b/Build/source/utils/asymptote/runmath.in index 88ca420a399..f64d3117d4a 100644 --- a/Build/source/utils/asymptote/runmath.in +++ b/Build/source/utils/asymptote/runmath.in @@ -34,6 +34,118 @@ const char *invalidargument="invalid argument"; extern uint32_t CLZ(uint32_t a); +inline unsigned intbits() { + static unsigned count=0; + if(count > 0) return count; + while((1UL << count) < Int_MAX) + ++count; + ++count; + return count; +} + +static const unsigned char BitReverseTable8[256]= +{ +#define R2(n) n, n+2*64, n+1*64, n+3*64 +#define R4(n) R2(n),R2(n+2*16),R2(n+1*16),R2(n+3*16) +#define R6(n) R4(n),R4(n+2*4 ),R4(n+1*4 ),R4(n+3*4 ) +R6(0),R6(2),R6(1),R6(3) +}; +#undef R2 +#undef R4 +#undef R6 + +unsigned long long bitreverse8(unsigned long long a) +{ + return + (unsigned long long) BitReverseTable8[a]; +} + +unsigned long long bitreverse16(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 8)]); +} + +unsigned long long bitreverse24(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 16)]); +} + +unsigned long long bitreverse32(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 24)]); +} + +unsigned long long bitreverse40(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 32)]); +} + +unsigned long long bitreverse48(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 40) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 32) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 40)]); +} + +unsigned long long bitreverse56(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 48) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 40) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 32) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 40) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 48)]); +} + +unsigned long long bitreverse64(unsigned long long a) +{ + return + ((unsigned long long) BitReverseTable8[a & 0xff] << 56) | + ((unsigned long long) BitReverseTable8[(a >> 8) & 0xff] << 48) | + ((unsigned long long) BitReverseTable8[(a >> 16) & 0xff] << 40) | + ((unsigned long long) BitReverseTable8[(a >> 24) & 0xff] << 32) | + ((unsigned long long) BitReverseTable8[(a >> 32) & 0xff] << 24) | + ((unsigned long long) BitReverseTable8[(a >> 40) & 0xff] << 16) | + ((unsigned long long) BitReverseTable8[(a >> 48) & 0xff] << 8) | + ((unsigned long long) BitReverseTable8[(a >> 56)]); +} + +// From Warren, Jr., Henry S. (2013) [2002]. Hacker's Delight (2 ed.). +// Addison Wesley - Pearson Education, Inc. pp. 81-96. +Int popcount(Int a) +{ + const uint64_t m1 = 0x5555555555555555; //binary: 0101... + const uint64_t m2 = 0x3333333333333333; //binary: 00110011.. + const uint64_t m4 = 0x0f0f0f0f0f0f0f0f; //binary: 4 zeros, 4 ones ... + const uint64_t h01 = 0x0101010101010101; //the sum of 256 to the power of 0,1,2,3... + +// This algorithm uses 12 arithmetic operations, one of which is a multiply. + a -= (a >> 1) & m1; //put count of each 2 bits into those 2 bits + a=(a & m2)+((a >> 2) & m2); //put count of each 4 bits into those 4 bits + a=(a+(a >> 4)) & m4; //put count of each 8 bits into those 8 bits + return (a * h01) >> 56; //returns left 8 bits of a+(a << 8)+(a << 16)+(a << 24)+... +} + // Return the factorial of a non-negative integer using a lookup table. Int factorial(Int n) { @@ -300,22 +412,38 @@ Int NOT(Int a) Int CLZ(Int a) { - if((uint32_t) a > 0xFFFFFFFF) return -1; - return CLZ((uint32_t) a); + if((unsignedInt) a > 0xFFFFFFFF) + return CLZ((uint32_t) (a >> 32)); + else { + int bits=intbits(); + if(a != 0) return bits-32+CLZ((uint32_t) a); + return bits; + } +} + +Int popcount(Int a) +{ + return popcount(a); } Int CTZ(Int a) { - if((uint32_t) a > 0xFFFFFFFF) return -1; -#if __GNUC__ - return __builtin_ctz(a); -#else - // find the number of trailing zeros in a 32-bit number - static const int MultiplyDeBruijnBitPosition[32] = { - 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, - 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9 - }; - return MultiplyDeBruijnBitPosition[((uint32_t)((a & -a) * 0x077CB531U)) - >> 27]; -#endif + return popcount((a&-a)-1); +} + +// bitreverse a within a word of length bits. +Int bitreverse(Int a, Int bits) +{ + typedef unsigned long long Bitreverse(unsigned long long a); + static Bitreverse *B[]={bitreverse8,bitreverse16,bitreverse24,bitreverse32, + bitreverse40,bitreverse48,bitreverse56,bitreverse64}; + int maxbits=intbits()-1; // Drop sign bit +#if Int_MAX2 >= 0x7fffffffffffffffLL + --maxbits; // Drop extra bit for reserved values +#endif + if(bits <= 0 || bits > maxbits || a < 0 || + (unsigned long long) a >= (1ULL << bits)) + return -1; + unsigned int bytes=(bits+7)/8; + return B[bytes-1]((unsigned long long) a) >> (8*bytes-bits); } diff --git a/Build/source/utils/asymptote/runstring.cc b/Build/source/utils/asymptote/runstring.cc index d1d3008ac2f..8e2ed80d908 100644 --- a/Build/source/utils/asymptote/runstring.cc +++ b/Build/source/utils/asymptote/runstring.cc @@ -376,16 +376,17 @@ void gen_runstring11(stack *Stack) } #line 259 "runstring.in" -// string format(string *format, string separator, real x, string locale=emptystring); +// string format(string *format, bool forcemath=false, string separator, real x, string locale=emptystring); void gen_runstring12(stack *Stack) { string locale=vm::pop<string>(Stack,emptystring); real x=vm::pop<real>(Stack); string separator=vm::pop<string>(Stack); + bool forcemath=vm::pop<bool>(Stack,false); string * format=vm::pop<string *>(Stack); #line 261 "runstring.in" bool tex=getSetting<string>("tex") != "none"; - bool texify=false; + bool texify=forcemath; ostringstream out; const char *p0=format->c_str(); @@ -637,7 +638,7 @@ void gen_runstring_venv(venv &ve) #line 205 "runstring.in" addFunc(ve, run::gen_runstring11, primString() , SYM(format), formal(primString(), SYM(format), false, false), formal(primInt(), SYM(x), false, false), formal(primString() , SYM(locale), true, false)); #line 259 "runstring.in" - addFunc(ve, run::gen_runstring12, primString() , SYM(format), formal(primString(), SYM(format), false, false), formal(primString() , SYM(separator), false, false), formal(primReal(), SYM(x), false, false), formal(primString() , SYM(locale), true, false)); + addFunc(ve, run::gen_runstring12, primString() , SYM(format), formal(primString(), SYM(format), false, false), formal(primBoolean(), SYM(forcemath), true, false), formal(primString() , SYM(separator), false, false), formal(primReal(), SYM(x), false, false), formal(primString() , SYM(locale), true, false)); #line 386 "runstring.in" addFunc(ve, run::gen_runstring13, primInt(), SYM(hex), formal(primString() , SYM(s), false, false)); #line 397 "runstring.in" diff --git a/Build/source/utils/asymptote/runstring.in b/Build/source/utils/asymptote/runstring.in index 3da636d325a..03fac3daf62 100644 --- a/Build/source/utils/asymptote/runstring.in +++ b/Build/source/utils/asymptote/runstring.in @@ -256,11 +256,11 @@ string format(string *format, Int x, string locale=emptystring) return out.str(); } -string format(string *format, string separator, real x, +string format(string *format, bool forcemath=false, string separator, real x, string locale=emptystring) { bool tex=getSetting<string>("tex") != "none"; - bool texify=false; + bool texify=forcemath; ostringstream out; const char *p0=format->c_str(); diff --git a/Build/source/utils/asymptote/util.cc b/Build/source/utils/asymptote/util.cc index af8fb1a811e..228f7596df6 100644 --- a/Build/source/utils/asymptote/util.cc +++ b/Build/source/utils/asymptote/util.cc @@ -5,6 +5,8 @@ * A place for useful utility functions. *****/ +#define _POSIX_C_SOURCE 200809L + #include <cassert> #include <iostream> #include <cstdio> @@ -184,7 +186,7 @@ string auxname(string filename, string suffix) { return buildname(filename,suffix,"_"); } - + sighandler_t Signal(int signum, sighandler_t handler) { struct sigaction action,oldaction; diff --git a/Build/source/utils/asymptote/util.h b/Build/source/utils/asymptote/util.h index 7753f9401eb..aa1cfa13385 100644 --- a/Build/source/utils/asymptote/util.h +++ b/Build/source/utils/asymptote/util.h @@ -88,8 +88,7 @@ int System(const mem::vector<string> &command, int quiet=0, bool wait=true, int *pid=NULL); #if defined(__DECCXX_LIBCXX_RH70) -extern "C" int kill(pid_t pid, Int sig) throw(); -extern "C" char *strsignal(Int sig); +extern "C" char *strsignal(int sig); extern "C" double asinh(double x); extern "C" double acosh(double x); extern "C" double atanh(double x); @@ -101,12 +100,14 @@ extern "C" double remainder(double x, double y); extern "C" double hypot(double x, double y) throw(); extern "C" double jn(Int n, double x); extern "C" double yn(Int n, double x); +extern "C" int isnan(double); #endif #if defined(__DECCXX_LIBCXX_RH70) || defined(__CYGWIN__) +extern "C" int usleep(int); +extern "C" int kill(pid_t pid, int sig) throw(); extern "C" int snprintf(char *str, size_t size, const char *format,...); -extern "C" int isnan(double); #include <stdio.h> extern "C" FILE *fdopen(int fd, const char *mode); extern "C" int fileno(FILE *); diff --git a/Build/source/utils/asymptote/xstream.h b/Build/source/utils/asymptote/xstream.h index c0f335e6133..3f5e749f9e9 100644 --- a/Build/source/utils/asymptote/xstream.h +++ b/Build/source/utils/asymptote/xstream.h @@ -32,10 +32,13 @@ #define u_quad_t unsigned long long #ifdef __CYGWIN__ +#include <sys/select.h> +#define u_char unsigned char +#define u_int unsigned int +#define u_short unsigned short +#define u_long unsigned long extern "C" int fseeko(FILE *, off_t, int); extern "C" off_t ftello(FILE *); -#define xdr_longlong_t xdr_int64_t -#define xdr_u_longlong_t xdr_uint64_t #endif #ifdef _POSIX_SOURCE |