Subject: CGAL users discussion list
List archive
- From: Peter Palfrader <>
- To:
- Subject: [cgal-discuss] error in comparing CORE Expr values
- Date: Wed, 18 Sep 2019 13:33:18 +0000
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-phdr: 9a23:NSuXYB9Pdxhy6/9uRHKM819IXTAuvvDOBiVQ1KB30uwcTK2v8tzYMVDF4r011RmVBN6dsqIP1bCe8/i5HzBZu9DZ6DFKWacPfidNsd8RkQ0kDZzNImzAB9muURYHGt9fXkRu5XCxPBsdMs//Y1rPvi/6tmZKSV3wOgVvO+v6BJPZgdip2OCu4Z3TZBhDiCagbb9oIxi6sAvcutMLjYZhJao8ywXFqWZMd+hK2G9kP12ekwvi6suq4JJv7yFcsO89+sBdVqn3Y742RqFCAjQ8NGA16szrtR3dQgaK+3ARTGYYnAdWDgbc9B31UYv/vSX8tupmxSmVJtb2QqwuWTSj9KhkVhnlgzoaOjEj8WHXjstwjL9HoB+kuhdyzZLYbJ2TOfFjeK7WYNEUSndbXstJWSJPAp2yYZYMAeUOIelXsofyqkALrReiGQWhHv/jxyVWinLwwKY00/4hEQbD3AE4BdwBrmjUo8vvNKwPS+661q3IzTvZb/xMxDjy9pLIeQ0mrPGUQ71wbdTeyVM0GgPdlFqQrYLlPymP2esQrWeb9fBsVeW1i24osgx8pCWkyMkrionMnI0Vy1bE+D1hwIkvId24RlR7bsS5H5ROrSGWLYx2QtktQ21wpSk11KYJuZ+hcygM0pgnwATfa/OBfoOV4RzjTP6cLSlliH9rYr6zmRi//Ei6xuHiWMS4zUxGojRZntTMsH0Gygbd5dKdSvRn+0eswTaP2B7X6uFDOU00jrDUK4Q/zb4zjJYTt0PDHjXol0XuiK+Xdl8o+u+y6+Toernmp5mcOJFoigzmLKgih8KyDf4mPgUAX2WX4/qw2bP+8UHjXrlGkv07nrHcsJ/AJMQboqC5AxVS0oYm8xu/Fymp0MgGknkdN19FYAiIj4znO1HUOv/3EOmwg062nDds3fDGMaXtAo/RIXjbjLfhYbF95lZAxwo8199f44tYBawAIPLoRkDxqcfYDgQiPgyvw+fnDc192ZkEVWKOBK+ZKqLSvkWS6uIhOenfLLMS7T3yIvxg6//1hmIigncce7Oo1N0ZciOWBPNjdn2UfXf2yu8IFWkQtwYzVqS+kFCeXCR7f3+2Ubg16jwhToW8AtGQFciWnLWd0XLjTdVtbWdcBwXUSCq6R8C/Q/4JLRmqDIphnzgDDOnzUIY72BLosgjgxqJjP6zT4CJK7cuyhugw3PXakFQJzRIxCs2c12+XSGQtwzEQTjs4xqlzrFY7zU2Mg/Eh365oUOdL7vYMaT8UcIbGxrUnWcj7Xgzbd9uEUhChWNr0WTw=
Hi!
I have encountered what seems like a strange issue:
Consider this code snippet:
] std::cout << "v1: " << v1 << std::endl;
] std::cout << "v2: " << v2 << std::endl;
] std::cout << "v1 < v2: " << (v1 < v2 ? "yes" : "no") << std::endl;
which prints this:
] v1: 0.49770
] v2: 0.01047
] v1 < v2: yes
I'm not sure what is going on, but I don't think that 0.49770 is
less than 0.01047. :)
This is with libcgal13 (as shipped in Debian 10[1] and Ubuntu 18.04). The
attached piece of code constructs v1 and v2. Compiling with clang++ (or g++)
produces this effect:
| weasel@waschbaer:~$ clang++ cgal0_1.cpp -o cgal -lgmpxx -lgmp
-lboost_thread -lCGAL_Core -lCGAL
| weasel@waschbaer:~$ ./cgal
| v1: 0.49770
| v2: 0.01047
| v1 < v2: yes
If you multiply all the constants (not unity) by 100, nothing changes:
| v1: 49.7703
| v2: 1.04670
| v1 < v2: yes
Once you multiply them by 10000: (cf. cgal0_2.cpp).
| v1: 4977.03
| v2: 104.670
| v1 < v2: no
Something's fishy here.
Cheers,
Peter
1. Versions of packages libcgal13:amd64 depends on:
libboost-thread1.67.0 1.67.0-13
libc6 2.28-10
libgcc1 1:8.3.0-6
libgmp10 2:6.1.2+dfsg-4
libstdc++6 8.3.0-6
zlib1g 1:1.2.11.dfsg-1
--
| .''`. ** Debian **
Peter Palfrader | : :' : The universal
https://www.palfrader.org/ | `. `' Operating System
| `- https://www.debian.org/
#include <iostream> #include <CGAL/Exact_predicates_exact_constructions_kernel_with_sqrt.h> using Kernel = CGAL::Exact_predicates_exact_constructions_kernel_with_sqrt; using NT = Kernel::FT; int main() { NT e_000000 = NT::getZero(); // 0 // tree-height: 1 NT e_111111 = NT::getOne(); // 1 // tree-height: 1 NT e_e49370 = NT("-926776695296637/250000000000000"); // -3.70711 // tree-height: 1 NT e_e4b470 = NT("-6176526454685371/2000000000000000"); // -3.08826 // tree-height: 1 NT e_e4b3f0 = NT("-7562817917197151/2500000000000000"); // -3.02513 // tree-height: 1 NT e_ec78a0 = e_e4b470 - e_e4b3f0; // -0.06314 // tree-height: 2 NT e_f82f00 = e_e49370 - e_111111; // -4.70711 // tree-height: 2 NT e_e4b430 = NT("-39812305722547183/10000000000000000"); // -3.98123 // tree-height: 1 NT e_e4b4b0 = NT("-7864914871474987/2000000000000000"); // -3.93246 // tree-height: 1 NT e_ec7850 = e_e4b430 - e_e4b4b0; // -0.04877 // tree-height: 2 NT e_f26290 = - e_ec7850; // 0.04877 // tree-height: 3 NT e_fa6b88 = e_f82f00 * e_ec7850; // 0.22958 // tree-height: 3 NT e_e493b0 = NT("-1176776695296637/250000000000000"); // -4.70711 // tree-height: 1 NT e_f26250 = - e_e4b3f0; // 3.02513 // tree-height: 2 NT e_ede980 = e_f26250 * e_ec7850; // -0.14754 // tree-height: 3 NT e_ede9c8 = e_e4b430 * e_ec78a0; // 0.25136 // tree-height: 3 NT e_ec78f0 = e_ede980 - e_ede9c8; // -0.39890 // tree-height: 4 NT e_fdd950 = e_ec7850 + e_ec78f0; // -0.44768 // tree-height: 5 NT e_fb16a0 = - e_fdd950; // 0.44768 // tree-height: 6 NT e_f53398 = e_fb16a0 / e_ec78a0; // -7.09068 // tree-height: 7 NT e_f82f50 = e_e493b0 - e_f53398; // 2.38357 // tree-height: 8 NT e_fa6bd0 = e_f82f50 * e_ec78a0; // -0.15049 // tree-height: 9 NT e_fdd9f0 = e_fa6b88 + e_fa6bd0; // 0.07909 // tree-height: 10 NT e_fa6c18 = e_ec7850 * e_ec7850; // 0.00238 // tree-height: 3 NT e_fa6c60 = e_ec78a0 * e_ec78a0; // 0.00399 // tree-height: 3 NT e_fdda40 = e_fa6c18 + e_fa6c60; // 0.00636 // tree-height: 4 NT e_f36020 = CGAL::sqrt(e_fdda40); // 0.07978 // tree-height: 5 NT e_e492f0 = NT("-464966243551581/125000000000000"); // -3.71973 // tree-height: 1 NT e_ec7990 = e_e49370 - e_e492f0; // 0.01262 // tree-height: 2 NT e_e493f0 = NT("-36944836139604567/10000000000000000"); // -3.69448 // tree-height: 1 NT e_ec77b0 = e_e493f0 - e_e49370; // 0.01262 // tree-height: 2 NT e_e49430 = NT("-4719729948412639/1000000000000000"); // -4.71973 // tree-height: 1 NT e_ec7760 = e_e493b0 - e_e49430; // 0.01262 // tree-height: 2 NT e_f261d0 = - e_ec7760; // -0.01262 // tree-height: 3 NT e_ede860 = e_ec7760 * e_ec7760; // 0.00016 // tree-height: 3 NT e_ede8a8 = e_ec77b0 * e_ec77b0; // 0.00016 // tree-height: 3 NT e_eeb070 = e_ede860 + e_ede8a8; // 0.00032 // tree-height: 4 NT e_f341a0 = CGAL::sqrt(e_eeb070); // 0.01785 // tree-height: 5 NT e_f455b0 = e_ec7760 / e_f341a0; // 0.70711 // tree-height: 6 NT e_ef69c0 = e_111111 + e_f455b0; // 1.70711 // tree-height: 7 NT e_f2f1d0 = - e_ec7760; // -0.01262 // tree-height: 3 NT e_f6c5d0 = e_ef69c0 * e_f2f1d0; // -0.02155 // tree-height: 8 NT e_f26190 = - e_e49370; // 3.70711 // tree-height: 2 NT e_ede7d0 = e_f26190 * e_ec7760; // 0.04680 // tree-height: 3 NT e_ede818 = e_e493b0 * e_ec77b0; // -0.05942 // tree-height: 3 NT e_ec7800 = e_ede7d0 - e_ede818; // 0.10621 // tree-height: 4 NT e_ef6970 = e_ec7760 + e_ec7800; // 0.11884 // tree-height: 5 NT e_f2f190 = - e_ef6970; // -0.11884 // tree-height: 6 NT e_f4c168 = e_f2f190 / e_ec77b0; // -9.41421 // tree-height: 7 NT e_f455f8 = e_ec77b0 / e_f341a0; // 0.70711 // tree-height: 6 NT e_ef6a10 = e_f4c168 + e_f455f8; // -8.70711 // tree-height: 8 NT e_f6c618 = e_ef6a10 * e_ec77b0; // -0.10991 // tree-height: 9 NT e_ed6850 = e_f6c5d0 - e_f6c618; // 0.08836 // tree-height: 10 NT e_f6c6f0 = e_ec7990 * e_ed6850; // 0.00112 // tree-height: 11 NT e_e49330 = NT("-4694483613960447/1000000000000000"); // -4.69448 // tree-height: 1 NT e_ec7940 = e_e49330 - e_e493b0; // 0.01262 // tree-height: 2 NT e_f26350 = - e_ec7940; // -0.01262 // tree-height: 3 NT e_edebc0 = e_ec7940 * e_ec7940; // 0.00016 // tree-height: 3 NT e_edec08 = e_ec7990 * e_ec7990; // 0.00016 // tree-height: 3 NT e_eeb110 = e_edebc0 + e_edec08; // 0.00032 // tree-height: 4 NT e_f34220 = CGAL::sqrt(e_eeb110); // 0.01785 // tree-height: 5 NT e_f456d0 = e_ec7940 / e_f34220; // 0.70711 // tree-height: 6 NT e_ef6880 = e_111111 + e_f456d0; // 1.70711 // tree-height: 7 NT e_f2f110 = - e_ec7940; // -0.01262 // tree-height: 3 NT e_f6c4b0 = e_ef6880 * e_f2f110; // -0.02155 // tree-height: 8 NT e_f26310 = - e_e492f0; // 3.71973 // tree-height: 2 NT e_edeb30 = e_f26310 * e_ec7940; // 0.04695 // tree-height: 3 NT e_edeb78 = e_e49330 * e_ec7990; // -0.05926 // tree-height: 3 NT e_ec79e0 = e_edeb30 - e_edeb78; // 0.10621 // tree-height: 4 NT e_ef6830 = e_ec7940 + e_ec79e0; // 0.11884 // tree-height: 5 NT e_f2f0d0 = - e_ef6830; // -0.11884 // tree-height: 6 NT e_f4c120 = e_f2f0d0 / e_ec7990; // -9.41421 // tree-height: 7 NT e_f45718 = e_ec7990 / e_f34220; // 0.70711 // tree-height: 6 NT e_ef68d0 = e_f4c120 + e_f45718; // -8.70711 // tree-height: 8 NT e_f6c4f8 = e_ef68d0 * e_ec7990; // -0.10991 // tree-height: 9 NT e_ed67b0 = e_f6c4b0 - e_f6c4f8; // 0.08836 // tree-height: 10 NT e_f6c738 = e_ec77b0 * e_ed67b0; // 0.00112 // tree-height: 11 NT e_ed68f0 = e_f6c6f0 - e_f6c738; // -4.92304e-17 // tree-height: 12 NT e_f6c660 = e_ec7940 * e_ec77b0; // 0.00016 // tree-height: 3 NT e_f6c6a8 = e_ec7760 * e_ec7990; // 0.00016 // tree-height: 3 NT e_ed68a0 = e_f6c660 - e_f6c6a8; // 1.64101e-17 // tree-height: 4 NT e_f4c1b0 = e_ed68f0 / e_ed68a0; // -3.00000 // tree-height: 13 NT e_ed6990 = e_f4c1b0 - e_e49370; // 0.70711 // tree-height: 14 NT e_fa6cf0 = e_ed6990 * e_ec7850; // -0.03449 // tree-height: 15 NT e_f6c780 = e_ec7760 * e_ed67b0; // 0.00112 // tree-height: 11 NT e_f6c7c8 = e_ec7940 * e_ed6850; // 0.00112 // tree-height: 11 NT e_ed6940 = e_f6c780 - e_f6c7c8; // -6.56405e-17 // tree-height: 12 NT e_f4c1f8 = e_ed6940 / e_ed68a0; // -4.00000 // tree-height: 13 NT e_ed69e0 = e_f4c1f8 - e_e493b0; // 0.70711 // tree-height: 14 NT e_fa6d38 = e_ed69e0 * e_ec78a0; // -0.04464 // tree-height: 15 NT e_fdda90 = e_fa6cf0 + e_fa6d38; // -0.07913 // tree-height: 16 NT e_f82fa0 = e_f36020 - e_fdda90; // 0.15891 // tree-height: 17 NT e_f533e0 = e_fdd9f0 / e_f82fa0; // 0.49770 // tree-height: 18 NT e_e4bb70 = NT("-37440590959507967/10000000000000000"); // -3.74406 // tree-height: 1 NT e_e4baf0 = NT("-4670064590775217/1250000000000000"); // -3.73605 // tree-height: 1 NT e_f82320 = e_e4bb70 - e_e4baf0; // -0.00801 // tree-height: 2 NT e_e4ba70 = NT("-3727481491980763/1000000000000000"); // -3.72748 // tree-height: 1 NT e_ec8d40 = e_e4baf0 - e_e4ba70; // -0.00857 // tree-height: 2 NT e_ec8e30 = e_e4bb70 - e_e4baf0; // -0.00801 // tree-height: 2 NT e_e4bb30 = NT("-33230471551108343/10000000000000000"); // -3.32305 // tree-height: 1 NT e_e4bbb0 = NT("-1665823867386329/500000000000000"); // -3.33165 // tree-height: 1 NT e_ec8de0 = e_e4bb30 - e_e4bbb0; // 0.00860 // tree-height: 2 NT e_f273d0 = - e_ec8de0; // -0.00860 // tree-height: 3 NT e_ee10e0 = e_ec8de0 * e_ec8de0; // 0.00007 // tree-height: 3 NT e_ee1128 = e_ec8e30 * e_ec8e30; // 0.00006 // tree-height: 3 NT e_eeb7f0 = e_ee10e0 + e_ee1128; // 0.00014 // tree-height: 4 NT e_f347a0 = CGAL::sqrt(e_eeb7f0); // 0.01175 // tree-height: 5 NT e_f46330 = e_ec8de0 / e_f347a0; // 0.73189 // tree-height: 6 NT e_ef9e40 = e_111111 + e_f46330; // 1.73189 // tree-height: 7 NT e_f31150 = - e_ec8de0; // -0.00860 // tree-height: 3 NT e_f71880 = e_ef9e40 * e_f31150; // -0.01490 // tree-height: 8 NT e_f27390 = - e_e4baf0; // 3.73605 // tree-height: 2 NT e_ee1050 = e_f27390 * e_ec8de0; // 0.03213 // tree-height: 3 NT e_ee1098 = e_e4bb30 * e_ec8e30; // 0.02661 // tree-height: 3 NT e_ec8e80 = e_ee1050 - e_ee1098; // 0.00552 // tree-height: 4 NT e_ef9df0 = e_ec8de0 + e_ec8e80; // 0.01412 // tree-height: 5 NT e_f31110 = - e_ef9df0; // -0.01412 // tree-height: 6 NT e_f4d908 = e_f31110 / e_ec8e30; // 1.76383 // tree-height: 7 NT e_f46378 = e_ec8e30 / e_f347a0; // -0.68142 // tree-height: 6 NT e_ef9e90 = e_f4d908 + e_f46378; // 1.08241 // tree-height: 8 NT e_f718c8 = e_ef9e90 * e_ec8e30; // -0.00867 // tree-height: 9 NT e_f758f0 = e_f71880 - e_f718c8; // -0.00623 // tree-height: 10 NT e_f719a0 = e_ec8d40 * e_f758f0; // 0.00005 // tree-height: 11 NT e_e4bab0 = NT("-33327875678154193/10000000000000000"); // -3.33279 // tree-height: 1 NT e_ec8cf0 = e_e4bab0 - e_e4bb30; // -0.00974 // tree-height: 2 NT e_f27310 = - e_ec8cf0; // 0.00974 // tree-height: 3 NT e_ee0f30 = e_ec8cf0 * e_ec8cf0; // 0.00009 // tree-height: 3 NT e_ee0f78 = e_ec8d40 * e_ec8d40; // 0.00007 // tree-height: 3 NT e_eeb7a0 = e_ee0f30 + e_ee0f78; // 0.00017 // tree-height: 4 NT e_f34760 = CGAL::sqrt(e_eeb7a0); // 0.01297 // tree-height: 5 NT e_f462a0 = e_ec8cf0 / e_f34760; // -0.75077 // tree-height: 6 NT e_ef9d00 = e_111111 + e_f462a0; // 0.24923 // tree-height: 7 NT e_f31090 = - e_ec8cf0; // 0.00974 // tree-height: 3 NT e_f71760 = e_ef9d00 * e_f31090; // 0.00243 // tree-height: 8 NT e_f272d0 = - e_e4ba70; // 3.72748 // tree-height: 2 NT e_ee0ea0 = e_f272d0 * e_ec8cf0; // -0.03631 // tree-height: 3 NT e_ee0ee8 = e_e4bab0 * e_ec8d40; // 0.02856 // tree-height: 3 NT e_ec8d90 = e_ee0ea0 - e_ee0ee8; // -0.06487 // tree-height: 4 NT e_ef9cb0 = e_ec8cf0 + e_ec8d90; // -0.07461 // tree-height: 5 NT e_f31050 = - e_ef9cb0; // 0.07461 // tree-height: 6 NT e_f4d8c0 = e_f31050 / e_ec8d40; // -8.70579 // tree-height: 7 NT e_f462e8 = e_ec8d40 / e_f34760; // -0.66057 // tree-height: 6 NT e_ef9d50 = e_f4d8c0 + e_f462e8; // -9.36636 // tree-height: 8 NT e_f717a8 = e_ef9d50 * e_ec8d40; // 0.08027 // tree-height: 9 NT e_f75850 = e_f71760 - e_f717a8; // -0.07784 // tree-height: 10 NT e_f719e8 = e_ec8e30 * e_f75850; // 0.00062 // tree-height: 11 NT e_f75990 = e_f719a0 - e_f719e8; // -0.00057 // tree-height: 12 NT e_f71910 = e_ec8cf0 * e_ec8e30; // 0.00008 // tree-height: 3 NT e_f71958 = e_ec8de0 * e_ec8d40; // -0.00007 // tree-height: 3 NT e_f75940 = e_f71910 - e_f71958; // 0.00015 // tree-height: 4 NT e_f4d950 = e_f75990 / e_f75940; // -3.75701 // tree-height: 13 NT e_f75a30 = e_f4d950 - e_e4baf0; // -0.02095 // tree-height: 14 NT e_e4bbf0 = NT("-941860013189427/250000000000000"); // -3.76744 // tree-height: 1 NT e_ec8c50 = e_e4bbf0 - e_e4bb70; // -0.02338 // tree-height: 2 NT e_e4bc30 = NT("-3358630797336759/1000000000000000"); // -3.35863 // tree-height: 1 NT e_ec8c00 = e_e4bbb0 - e_e4bc30; // 0.02698 // tree-height: 2 NT e_f27250 = - e_ec8c00; // -0.02698 // tree-height: 3 NT e_ee0d80 = e_ec8c00 * e_ec8c00; // 0.00073 // tree-height: 3 NT e_ee0dc8 = e_ec8c50 * e_ec8c50; // 0.00055 // tree-height: 3 NT e_eeb750 = e_ee0d80 + e_ee0dc8; // 0.00127 // tree-height: 4 NT e_f34720 = CGAL::sqrt(e_eeb750); // 0.03570 // tree-height: 5 NT e_f46210 = e_ec8c00 / e_f34720; // 0.75575 // tree-height: 6 NT e_efa0c0 = e_111111 + e_f46210; // 1.75575 // tree-height: 7 NT e_f312d0 = - e_ec8c00; // -0.02698 // tree-height: 3 NT e_f71c70 = e_efa0c0 * e_f312d0; // -0.04738 // tree-height: 8 NT e_f27210 = - e_e4bb70; // 3.74406 // tree-height: 2 NT e_ee0cf0 = e_f27210 * e_ec8c00; // 0.10103 // tree-height: 3 NT e_ee0d38 = e_e4bbb0 * e_ec8c50; // 0.07790 // tree-height: 3 NT e_ec8ca0 = e_ee0cf0 - e_ee0d38; // 0.02313 // tree-height: 4 NT e_efa070 = e_ec8c00 + e_ec8ca0; // 0.05011 // tree-height: 5 NT e_f31290 = - e_efa070; // -0.05011 // tree-height: 6 NT e_f4da28 = e_f31290 / e_ec8c50; // 2.14329 // tree-height: 7 NT e_f46258 = e_ec8c50 / e_f34720; // -0.65486 // tree-height: 6 NT e_efa110 = e_f4da28 + e_f46258; // 1.48843 // tree-height: 8 NT e_f71cb8 = e_efa110 * e_ec8c50; // -0.03480 // tree-height: 9 NT e_f75bc0 = e_f71c70 - e_f71cb8; // -0.01257 // tree-height: 10 NT e_f71d90 = e_ec8e30 * e_f75bc0; // 0.00010 // tree-height: 11 NT e_ef9f80 = e_111111 + e_f46330; // 1.73189 // tree-height: 7 NT e_f31210 = - e_ec8de0; // -0.00860 // tree-height: 3 NT e_f71b50 = e_ef9f80 * e_f31210; // -0.01490 // tree-height: 8 NT e_ef9f30 = e_ec8de0 + e_ec8e80; // 0.01412 // tree-height: 5 NT e_f311d0 = - e_ef9f30; // -0.01412 // tree-height: 6 NT e_f4d9e0 = e_f311d0 / e_ec8e30; // 1.76383 // tree-height: 7 NT e_ef9fd0 = e_f4d9e0 + e_f46378; // 1.08241 // tree-height: 8 NT e_f71b98 = e_ef9fd0 * e_ec8e30; // -0.00867 // tree-height: 9 NT e_f75b20 = e_f71b50 - e_f71b98; // -0.00623 // tree-height: 10 NT e_f71dd8 = e_ec8c50 * e_f75b20; // 0.00015 // tree-height: 11 NT e_f75c60 = e_f71d90 - e_f71dd8; // -0.00004 // tree-height: 12 NT e_f71d00 = e_ec8de0 * e_ec8c50; // -0.00020 // tree-height: 3 NT e_f71d48 = e_ec8c00 * e_ec8e30; // -0.00022 // tree-height: 3 NT e_f75c10 = e_f71d00 - e_f71d48; // 0.00001 // tree-height: 4 NT e_f4da70 = e_f75c60 / e_f75c10; // -3.00000 // tree-height: 13 NT e_f75d00 = e_f4da70 - e_e4bb70; // 0.74406 // tree-height: 14 NT e_f85570 = e_f75a30 - e_f75d00; // -0.76501 // tree-height: 15 NT e_f54550 = e_f82320 / e_f85570; // 0.01047 // tree-height: 16 NT v1 = e_f533e0; NT v2 = e_f54550; std::cout << "v1: " << v1 << std::endl; std::cout << "v2: " << v2 << std::endl; std::cout << "v1 < v2: " << (v1 < v2 ? "yes" : "no") << std::endl; };
#include <iostream> #include <CGAL/Exact_predicates_exact_constructions_kernel_with_sqrt.h> using Kernel = CGAL::Exact_predicates_exact_constructions_kernel_with_sqrt; using NT = Kernel::FT; // #define ZEROES "0000" // #define ZEROES "00" #define ZEROES "" int main() { NT e_000000 = NT::getZero(); // 0 // tree-height: 1 NT e_111111 = NT::getOne(); // 1 // tree-height: 1 NT e_e49370 = NT("-926776695296637/25000000000" ZEROES); // -3.70711 // tree-height: 1 NT e_e4b470 = NT("-6176526454685371/200000000000" ZEROES); // -3.08826 // tree-height: 1 NT e_e4b3f0 = NT("-7562817917197151/250000000000" ZEROES); // -3.02513 // tree-height: 1 NT e_ec78a0 = e_e4b470 - e_e4b3f0; // -0.06314 // tree-height: 2 NT e_f82f00 = e_e49370 - e_111111; // -4.70711 // tree-height: 2 NT e_e4b430 = NT("-39812305722547183/1000000000000" ZEROES); // -3.98123 // tree-height: 1 NT e_e4b4b0 = NT("-7864914871474987/200000000000" ZEROES); // -3.93246 // tree-height: 1 NT e_ec7850 = e_e4b430 - e_e4b4b0; // -0.04877 // tree-height: 2 NT e_f26290 = - e_ec7850; // 0.04877 // tree-height: 3 NT e_fa6b88 = e_f82f00 * e_ec7850; // 0.22958 // tree-height: 3 NT e_e493b0 = NT("-1176776695296637/25000000000" ZEROES); // -4.70711 // tree-height: 1 NT e_f26250 = - e_e4b3f0; // 3.02513 // tree-height: 2 NT e_ede980 = e_f26250 * e_ec7850; // -0.14754 // tree-height: 3 NT e_ede9c8 = e_e4b430 * e_ec78a0; // 0.25136 // tree-height: 3 NT e_ec78f0 = e_ede980 - e_ede9c8; // -0.39890 // tree-height: 4 NT e_fdd950 = e_ec7850 + e_ec78f0; // -0.44768 // tree-height: 5 NT e_fb16a0 = - e_fdd950; // 0.44768 // tree-height: 6 NT e_f53398 = e_fb16a0 / e_ec78a0; // -7.09068 // tree-height: 7 NT e_f82f50 = e_e493b0 - e_f53398; // 2.38357 // tree-height: 8 NT e_fa6bd0 = e_f82f50 * e_ec78a0; // -0.15049 // tree-height: 9 NT e_fdd9f0 = e_fa6b88 + e_fa6bd0; // 0.07909 // tree-height: 10 NT e_fa6c18 = e_ec7850 * e_ec7850; // 0.00238 // tree-height: 3 NT e_fa6c60 = e_ec78a0 * e_ec78a0; // 0.00399 // tree-height: 3 NT e_fdda40 = e_fa6c18 + e_fa6c60; // 0.00636 // tree-height: 4 NT e_f36020 = CGAL::sqrt(e_fdda40); // 0.07978 // tree-height: 5 NT e_e492f0 = NT("-464966243551581/12500000000" ZEROES); // -3.71973 // tree-height: 1 NT e_ec7990 = e_e49370 - e_e492f0; // 0.01262 // tree-height: 2 NT e_e493f0 = NT("-36944836139604567/1000000000000" ZEROES); // -3.69448 // tree-height: 1 NT e_ec77b0 = e_e493f0 - e_e49370; // 0.01262 // tree-height: 2 NT e_e49430 = NT("-4719729948412639/100000000000" ZEROES); // -4.71973 // tree-height: 1 NT e_ec7760 = e_e493b0 - e_e49430; // 0.01262 // tree-height: 2 NT e_f261d0 = - e_ec7760; // -0.01262 // tree-height: 3 NT e_ede860 = e_ec7760 * e_ec7760; // 0.00016 // tree-height: 3 NT e_ede8a8 = e_ec77b0 * e_ec77b0; // 0.00016 // tree-height: 3 NT e_eeb070 = e_ede860 + e_ede8a8; // 0.00032 // tree-height: 4 NT e_f341a0 = CGAL::sqrt(e_eeb070); // 0.01785 // tree-height: 5 NT e_f455b0 = e_ec7760 / e_f341a0; // 0.70711 // tree-height: 6 NT e_ef69c0 = e_111111 + e_f455b0; // 1.70711 // tree-height: 7 NT e_f2f1d0 = - e_ec7760; // -0.01262 // tree-height: 3 NT e_f6c5d0 = e_ef69c0 * e_f2f1d0; // -0.02155 // tree-height: 8 NT e_f26190 = - e_e49370; // 3.70711 // tree-height: 2 NT e_ede7d0 = e_f26190 * e_ec7760; // 0.04680 // tree-height: 3 NT e_ede818 = e_e493b0 * e_ec77b0; // -0.05942 // tree-height: 3 NT e_ec7800 = e_ede7d0 - e_ede818; // 0.10621 // tree-height: 4 NT e_ef6970 = e_ec7760 + e_ec7800; // 0.11884 // tree-height: 5 NT e_f2f190 = - e_ef6970; // -0.11884 // tree-height: 6 NT e_f4c168 = e_f2f190 / e_ec77b0; // -9.41421 // tree-height: 7 NT e_f455f8 = e_ec77b0 / e_f341a0; // 0.70711 // tree-height: 6 NT e_ef6a10 = e_f4c168 + e_f455f8; // -8.70711 // tree-height: 8 NT e_f6c618 = e_ef6a10 * e_ec77b0; // -0.10991 // tree-height: 9 NT e_ed6850 = e_f6c5d0 - e_f6c618; // 0.08836 // tree-height: 10 NT e_f6c6f0 = e_ec7990 * e_ed6850; // 0.00112 // tree-height: 11 NT e_e49330 = NT("-4694483613960447/100000000000" ZEROES); // -4.69448 // tree-height: 1 NT e_ec7940 = e_e49330 - e_e493b0; // 0.01262 // tree-height: 2 NT e_f26350 = - e_ec7940; // -0.01262 // tree-height: 3 NT e_edebc0 = e_ec7940 * e_ec7940; // 0.00016 // tree-height: 3 NT e_edec08 = e_ec7990 * e_ec7990; // 0.00016 // tree-height: 3 NT e_eeb110 = e_edebc0 + e_edec08; // 0.00032 // tree-height: 4 NT e_f34220 = CGAL::sqrt(e_eeb110); // 0.01785 // tree-height: 5 NT e_f456d0 = e_ec7940 / e_f34220; // 0.70711 // tree-height: 6 NT e_ef6880 = e_111111 + e_f456d0; // 1.70711 // tree-height: 7 NT e_f2f110 = - e_ec7940; // -0.01262 // tree-height: 3 NT e_f6c4b0 = e_ef6880 * e_f2f110; // -0.02155 // tree-height: 8 NT e_f26310 = - e_e492f0; // 3.71973 // tree-height: 2 NT e_edeb30 = e_f26310 * e_ec7940; // 0.04695 // tree-height: 3 NT e_edeb78 = e_e49330 * e_ec7990; // -0.05926 // tree-height: 3 NT e_ec79e0 = e_edeb30 - e_edeb78; // 0.10621 // tree-height: 4 NT e_ef6830 = e_ec7940 + e_ec79e0; // 0.11884 // tree-height: 5 NT e_f2f0d0 = - e_ef6830; // -0.11884 // tree-height: 6 NT e_f4c120 = e_f2f0d0 / e_ec7990; // -9.41421 // tree-height: 7 NT e_f45718 = e_ec7990 / e_f34220; // 0.70711 // tree-height: 6 NT e_ef68d0 = e_f4c120 + e_f45718; // -8.70711 // tree-height: 8 NT e_f6c4f8 = e_ef68d0 * e_ec7990; // -0.10991 // tree-height: 9 NT e_ed67b0 = e_f6c4b0 - e_f6c4f8; // 0.08836 // tree-height: 10 NT e_f6c738 = e_ec77b0 * e_ed67b0; // 0.00112 // tree-height: 11 NT e_ed68f0 = e_f6c6f0 - e_f6c738; // -4.92304e-17 // tree-height: 12 NT e_f6c660 = e_ec7940 * e_ec77b0; // 0.00016 // tree-height: 3 NT e_f6c6a8 = e_ec7760 * e_ec7990; // 0.00016 // tree-height: 3 NT e_ed68a0 = e_f6c660 - e_f6c6a8; // 1.64101e-17 // tree-height: 4 NT e_f4c1b0 = e_ed68f0 / e_ed68a0; // -3.00000 // tree-height: 13 NT e_ed6990 = e_f4c1b0 - e_e49370; // 0.70711 // tree-height: 14 NT e_fa6cf0 = e_ed6990 * e_ec7850; // -0.03449 // tree-height: 15 NT e_f6c780 = e_ec7760 * e_ed67b0; // 0.00112 // tree-height: 11 NT e_f6c7c8 = e_ec7940 * e_ed6850; // 0.00112 // tree-height: 11 NT e_ed6940 = e_f6c780 - e_f6c7c8; // -6.56405e-17 // tree-height: 12 NT e_f4c1f8 = e_ed6940 / e_ed68a0; // -4.00000 // tree-height: 13 NT e_ed69e0 = e_f4c1f8 - e_e493b0; // 0.70711 // tree-height: 14 NT e_fa6d38 = e_ed69e0 * e_ec78a0; // -0.04464 // tree-height: 15 NT e_fdda90 = e_fa6cf0 + e_fa6d38; // -0.07913 // tree-height: 16 NT e_f82fa0 = e_f36020 - e_fdda90; // 0.15891 // tree-height: 17 NT e_f533e0 = e_fdd9f0 / e_f82fa0; // 0.49770 // tree-height: 18 NT e_e4bb70 = NT("-37440590959507967/1000000000000" ZEROES); // -3.74406 // tree-height: 1 NT e_e4baf0 = NT("-4670064590775217/125000000000" ZEROES); // -3.73605 // tree-height: 1 NT e_f82320 = e_e4bb70 - e_e4baf0; // -0.00801 // tree-height: 2 NT e_e4ba70 = NT("-3727481491980763/100000000000" ZEROES); // -3.72748 // tree-height: 1 NT e_ec8d40 = e_e4baf0 - e_e4ba70; // -0.00857 // tree-height: 2 NT e_ec8e30 = e_e4bb70 - e_e4baf0; // -0.00801 // tree-height: 2 NT e_e4bb30 = NT("-33230471551108343/1000000000000" ZEROES); // -3.32305 // tree-height: 1 NT e_e4bbb0 = NT("-1665823867386329/50000000000" ZEROES); // -3.33165 // tree-height: 1 NT e_ec8de0 = e_e4bb30 - e_e4bbb0; // 0.00860 // tree-height: 2 NT e_f273d0 = - e_ec8de0; // -0.00860 // tree-height: 3 NT e_ee10e0 = e_ec8de0 * e_ec8de0; // 0.00007 // tree-height: 3 NT e_ee1128 = e_ec8e30 * e_ec8e30; // 0.00006 // tree-height: 3 NT e_eeb7f0 = e_ee10e0 + e_ee1128; // 0.00014 // tree-height: 4 NT e_f347a0 = CGAL::sqrt(e_eeb7f0); // 0.01175 // tree-height: 5 NT e_f46330 = e_ec8de0 / e_f347a0; // 0.73189 // tree-height: 6 NT e_ef9e40 = e_111111 + e_f46330; // 1.73189 // tree-height: 7 NT e_f31150 = - e_ec8de0; // -0.00860 // tree-height: 3 NT e_f71880 = e_ef9e40 * e_f31150; // -0.01490 // tree-height: 8 NT e_f27390 = - e_e4baf0; // 3.73605 // tree-height: 2 NT e_ee1050 = e_f27390 * e_ec8de0; // 0.03213 // tree-height: 3 NT e_ee1098 = e_e4bb30 * e_ec8e30; // 0.02661 // tree-height: 3 NT e_ec8e80 = e_ee1050 - e_ee1098; // 0.00552 // tree-height: 4 NT e_ef9df0 = e_ec8de0 + e_ec8e80; // 0.01412 // tree-height: 5 NT e_f31110 = - e_ef9df0; // -0.01412 // tree-height: 6 NT e_f4d908 = e_f31110 / e_ec8e30; // 1.76383 // tree-height: 7 NT e_f46378 = e_ec8e30 / e_f347a0; // -0.68142 // tree-height: 6 NT e_ef9e90 = e_f4d908 + e_f46378; // 1.08241 // tree-height: 8 NT e_f718c8 = e_ef9e90 * e_ec8e30; // -0.00867 // tree-height: 9 NT e_f758f0 = e_f71880 - e_f718c8; // -0.00623 // tree-height: 10 NT e_f719a0 = e_ec8d40 * e_f758f0; // 0.00005 // tree-height: 11 NT e_e4bab0 = NT("-33327875678154193/1000000000000" ZEROES); // -3.33279 // tree-height: 1 NT e_ec8cf0 = e_e4bab0 - e_e4bb30; // -0.00974 // tree-height: 2 NT e_f27310 = - e_ec8cf0; // 0.00974 // tree-height: 3 NT e_ee0f30 = e_ec8cf0 * e_ec8cf0; // 0.00009 // tree-height: 3 NT e_ee0f78 = e_ec8d40 * e_ec8d40; // 0.00007 // tree-height: 3 NT e_eeb7a0 = e_ee0f30 + e_ee0f78; // 0.00017 // tree-height: 4 NT e_f34760 = CGAL::sqrt(e_eeb7a0); // 0.01297 // tree-height: 5 NT e_f462a0 = e_ec8cf0 / e_f34760; // -0.75077 // tree-height: 6 NT e_ef9d00 = e_111111 + e_f462a0; // 0.24923 // tree-height: 7 NT e_f31090 = - e_ec8cf0; // 0.00974 // tree-height: 3 NT e_f71760 = e_ef9d00 * e_f31090; // 0.00243 // tree-height: 8 NT e_f272d0 = - e_e4ba70; // 3.72748 // tree-height: 2 NT e_ee0ea0 = e_f272d0 * e_ec8cf0; // -0.03631 // tree-height: 3 NT e_ee0ee8 = e_e4bab0 * e_ec8d40; // 0.02856 // tree-height: 3 NT e_ec8d90 = e_ee0ea0 - e_ee0ee8; // -0.06487 // tree-height: 4 NT e_ef9cb0 = e_ec8cf0 + e_ec8d90; // -0.07461 // tree-height: 5 NT e_f31050 = - e_ef9cb0; // 0.07461 // tree-height: 6 NT e_f4d8c0 = e_f31050 / e_ec8d40; // -8.70579 // tree-height: 7 NT e_f462e8 = e_ec8d40 / e_f34760; // -0.66057 // tree-height: 6 NT e_ef9d50 = e_f4d8c0 + e_f462e8; // -9.36636 // tree-height: 8 NT e_f717a8 = e_ef9d50 * e_ec8d40; // 0.08027 // tree-height: 9 NT e_f75850 = e_f71760 - e_f717a8; // -0.07784 // tree-height: 10 NT e_f719e8 = e_ec8e30 * e_f75850; // 0.00062 // tree-height: 11 NT e_f75990 = e_f719a0 - e_f719e8; // -0.00057 // tree-height: 12 NT e_f71910 = e_ec8cf0 * e_ec8e30; // 0.00008 // tree-height: 3 NT e_f71958 = e_ec8de0 * e_ec8d40; // -0.00007 // tree-height: 3 NT e_f75940 = e_f71910 - e_f71958; // 0.00015 // tree-height: 4 NT e_f4d950 = e_f75990 / e_f75940; // -3.75701 // tree-height: 13 NT e_f75a30 = e_f4d950 - e_e4baf0; // -0.02095 // tree-height: 14 NT e_e4bbf0 = NT("-941860013189427/25000000000" ZEROES); // -3.76744 // tree-height: 1 NT e_ec8c50 = e_e4bbf0 - e_e4bb70; // -0.02338 // tree-height: 2 NT e_e4bc30 = NT("-3358630797336759/100000000000" ZEROES); // -3.35863 // tree-height: 1 NT e_ec8c00 = e_e4bbb0 - e_e4bc30; // 0.02698 // tree-height: 2 NT e_f27250 = - e_ec8c00; // -0.02698 // tree-height: 3 NT e_ee0d80 = e_ec8c00 * e_ec8c00; // 0.00073 // tree-height: 3 NT e_ee0dc8 = e_ec8c50 * e_ec8c50; // 0.00055 // tree-height: 3 NT e_eeb750 = e_ee0d80 + e_ee0dc8; // 0.00127 // tree-height: 4 NT e_f34720 = CGAL::sqrt(e_eeb750); // 0.03570 // tree-height: 5 NT e_f46210 = e_ec8c00 / e_f34720; // 0.75575 // tree-height: 6 NT e_efa0c0 = e_111111 + e_f46210; // 1.75575 // tree-height: 7 NT e_f312d0 = - e_ec8c00; // -0.02698 // tree-height: 3 NT e_f71c70 = e_efa0c0 * e_f312d0; // -0.04738 // tree-height: 8 NT e_f27210 = - e_e4bb70; // 3.74406 // tree-height: 2 NT e_ee0cf0 = e_f27210 * e_ec8c00; // 0.10103 // tree-height: 3 NT e_ee0d38 = e_e4bbb0 * e_ec8c50; // 0.07790 // tree-height: 3 NT e_ec8ca0 = e_ee0cf0 - e_ee0d38; // 0.02313 // tree-height: 4 NT e_efa070 = e_ec8c00 + e_ec8ca0; // 0.05011 // tree-height: 5 NT e_f31290 = - e_efa070; // -0.05011 // tree-height: 6 NT e_f4da28 = e_f31290 / e_ec8c50; // 2.14329 // tree-height: 7 NT e_f46258 = e_ec8c50 / e_f34720; // -0.65486 // tree-height: 6 NT e_efa110 = e_f4da28 + e_f46258; // 1.48843 // tree-height: 8 NT e_f71cb8 = e_efa110 * e_ec8c50; // -0.03480 // tree-height: 9 NT e_f75bc0 = e_f71c70 - e_f71cb8; // -0.01257 // tree-height: 10 NT e_f71d90 = e_ec8e30 * e_f75bc0; // 0.00010 // tree-height: 11 NT e_ef9f80 = e_111111 + e_f46330; // 1.73189 // tree-height: 7 NT e_f31210 = - e_ec8de0; // -0.00860 // tree-height: 3 NT e_f71b50 = e_ef9f80 * e_f31210; // -0.01490 // tree-height: 8 NT e_ef9f30 = e_ec8de0 + e_ec8e80; // 0.01412 // tree-height: 5 NT e_f311d0 = - e_ef9f30; // -0.01412 // tree-height: 6 NT e_f4d9e0 = e_f311d0 / e_ec8e30; // 1.76383 // tree-height: 7 NT e_ef9fd0 = e_f4d9e0 + e_f46378; // 1.08241 // tree-height: 8 NT e_f71b98 = e_ef9fd0 * e_ec8e30; // -0.00867 // tree-height: 9 NT e_f75b20 = e_f71b50 - e_f71b98; // -0.00623 // tree-height: 10 NT e_f71dd8 = e_ec8c50 * e_f75b20; // 0.00015 // tree-height: 11 NT e_f75c60 = e_f71d90 - e_f71dd8; // -0.00004 // tree-height: 12 NT e_f71d00 = e_ec8de0 * e_ec8c50; // -0.00020 // tree-height: 3 NT e_f71d48 = e_ec8c00 * e_ec8e30; // -0.00022 // tree-height: 3 NT e_f75c10 = e_f71d00 - e_f71d48; // 0.00001 // tree-height: 4 NT e_f4da70 = e_f75c60 / e_f75c10; // -3.00000 // tree-height: 13 NT e_f75d00 = e_f4da70 - e_e4bb70; // 0.74406 // tree-height: 14 NT e_f85570 = e_f75a30 - e_f75d00; // -0.76501 // tree-height: 15 NT e_f54550 = e_f82320 / e_f85570; // 0.01047 // tree-height: 16 NT v1 = e_f533e0; NT v2 = e_f54550; std::cout << "v1: " << v1 << std::endl; std::cout << "v2: " << v2 << std::endl; std::cout << "v1 < v2: " << (v1 < v2 ? "yes" : "no") << std::endl; };
- [cgal-discuss] error in comparing CORE Expr values, Peter Palfrader, 09/18/2019
- Re: [cgal-discuss] error in comparing CORE Expr values, Stefan Schirra, 09/19/2019
- Re: [cgal-discuss] error in comparing CORE Expr values, Stefan Schirra, 09/19/2019
- Re: [cgal-discuss] error in comparing CORE Expr values, Stefan Schirra, 09/19/2019
Archive powered by MHonArc 2.6.18.