EGC

Introduction
People
Papers
Talks
Links
Wiki

The Core Library

Introduction
Gallery/Videos
Features
Download
Contact


Features

Our library is designed with emphasis on the following properties:

Ease of Use:
It is intuitive, as users can achieve numerically robust algorithms without
  • Any change in programming style
  • Any change to the algorithms themselves
  • Any learning of new functions
  • Any prior knowledge of non-robustness issues
  • Any knowledge of how CORE works
In fact, simplest usage is to take a standard C/C++ program, and insert this 2-line preamble:
         #define Level <level_number>
         #include "CORE.h"
Replace <level_number> by the integers 1,2,3 or 4. These corresponds to the choice of accuracy levels.
This preamble should appear after all the standard header files such as <iostream.h>, but before your code. Now compile and execute your program as usual.

Again, the control of accuracy is a central theme is EGC.

Efficiency:
  • We address efficiency issues at algorithmic level, compiler front-end and back-end level. 
  • A general technique here is that of "precision-driven computation''. 
  • We implement floating point filters and root bounds.
  • We exploit a variety of compiler-based optimizations which aims to reconcile the conflicting goals of Object-Oriented design methodology and the needs for efficiency: reducing the overhead of dynamic dispatch, the specialization of data-structures, etc.


Portability:
We promote the idea of "write once, run at any numerical accuracy''. Performance portability across platforms is aimed at numerical accuracy as well as speed. We support a variety of platforms including windows and *nix-based systems with Mac OS X compatibility on the way.

By portability, we mean "performance portability''. For robust algorithms, the primary objective is numerical performance. This is achieved through our Numberical Accuracy API. We are also interested in compiler optimizations that produce highly efficient machine code for a range of platforms. We eventually plan to exploit a state-of-art compiler infrastructure such as TRIMARAN in collaboration with Professor Palem's group.


Impact:
We plan bring our library directly to user communities by its incorporation into widely-used application systems. Work is in progress with scientists from the CGAL project to incorporate the CORE library with their work.