... | ... | @@ -61,17 +61,20 @@ following: |
|
|
## 1.1 - Overview
|
|
|
COJAC is in fact a two-fold tool:
|
|
|
|
|
|
- a *"numerical sniffer"* that detects anomalies arising in arithmetic operations,
|
|
|
- a *_"numerical sniffer"_* that detects anomalies arising in arithmetic operations,
|
|
|
on either integers (eg overflow) or floating point numbers (eg
|
|
|
cancellation or NaN outcome). This can be of great help to detect vicious bugs
|
|
|
involving annoying events that normally happen silently in the Java Virtual
|
|
|
Machine. See [§2](home#2-cojac-the-numerical-sniffer).
|
|
|
Machine. See [§2](home#2-cojac-the-numerical-sniffer). This tool is pretty
|
|
|
stable and efficient (but can't handle constant expressions evaluated at compile-time).
|
|
|
|
|
|
- an *"enriching wrapper"* that automatically converts every float/double data
|
|
|
- an *_"enriching wrapper"_* that automatically converts every float/double data
|
|
|
into richer number types, so that you can experiment, at a very low cost, some
|
|
|
beautiful models such as arbitrary precision numbers, interval computation,
|
|
|
or even the marvelous automatic differentiation.
|
|
|
See [§3](home#3-cojac-the-enriching-wrapper).
|
|
|
See [§3](home#3-cojac-the-enriching-wrapper). This tool is still experimental (some
|
|
|
[limitations](home#52-issues-with-the-wrapper),
|
|
|
problems with Java8 lambdas, strong slowdown...).
|
|
|
|
|
|
With COJAC you don't have to modify your source code or even recompile. All
|
|
|
the work is done at runtime, when your application gets instrumented on-the-fly.
|
... | ... | |