From d23f9f46dc3c06a3f419113ea4bfcf532c273a47 Mon Sep 17 00:00:00 2001 From: Sylvain Pion Date: Tue, 20 Apr 1999 13:12:22 +0000 Subject: [PATCH] - Updated status for MipsPro and the workarounds. --- .../support/Interval_arithmetic/main.tex | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Packages/Interval_arithmetic/doc_tex/support/Interval_arithmetic/main.tex b/Packages/Interval_arithmetic/doc_tex/support/Interval_arithmetic/main.tex index 6f9b11c6679..f49c52a3bbc 100644 --- a/Packages/Interval_arithmetic/doc_tex/support/Interval_arithmetic/main.tex +++ b/Packages/Interval_arithmetic/doc_tex/support/Interval_arithmetic/main.tex @@ -229,8 +229,9 @@ this, he must take care to reset it to 'round to the nearest' before them. Platform support:\\ This part of {\cgal} must be explicitly ported to each non yet supported platform. For Intel, Sparc and Mips, only the GNU compilers use assembly -code. The MipsPro compiler uses the slow C code instead, and does not -support the construction \ccc{convert_to<>()} right now. +code. The MipsPro compiler uses slower C code instead, and does not +support the construction \ccc{convert_to<>()}, but a workaround +\ccc{convert_from_to(target, source)}. \end{ccClass} @@ -307,10 +308,14 @@ As a general rule, we advise the use of \ccImplementation -The template definition of the low level predicates of \cgal are overloaded for -the type \ccc{Filtered_exact}. It is a partial specialisation, +The template definition of the low level predicates of {\cgal} are overloaded +for the type \ccc{Filtered_exact}. It is a partial specialisation, which implies that this is not supported by the compilers that do not support -this C++ feature (MipsPro 7.2). +this C++ feature (MipsPro 7.2). A workaround is in place that allows to use +one such filtered number type at once, by explicitely specializing the +predicates for it. To do so, just define the macros \ccc{CGAL_IA_CT} and +\ccc{CGAL_IA_ET} to the corresponding number types before any inclusion of +{\cgal} files. For each predicate file, the overloaded code is generated automatically by a \ccc{PERL} script @@ -320,18 +325,19 @@ This script parses the template declaration of the functions and generates the overloaded code the following way: \begin{itemize} \item convert the entries to intervals using - \ccc{convert_to(CT)}, + \ccc{convert_to(CT)} (via the .interval() member + function), \item call the original template function with the type \ccc{Interval_nt_advanced}, \item if no exception is thrown, return the value, \item if an exception is thrown (the filter failed), convert the original - entries using \ccc{convert_to(CT)}, + entries using \ccc{convert_to(CT)} (via the .exact() member function), \item and call the original template function with the type \ccc{ET}. \end{itemize} \ccExample -The low level template predicates of \cgal are in files named +The low level template predicates of {\cgal} are in files named \ccc{CGAL/predicates_on_ftC2.h} (resp. ftC3), the script is used to produce the files \ccc{CGAL/Arithmetic_filter/predicates_on_ftC2.h} (resp. ftC3).