Skip to content

Commit

Permalink
Documenting test methods + todo list
Browse files Browse the repository at this point in the history
  • Loading branch information
Agathe Herrou committed Apr 3, 2024
1 parent 816bfb4 commit 3060d4c
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
19 changes: 19 additions & 0 deletions TESTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Notes on testing the intervals results

# Testing functions

## `check`

# Number of samples
In a number of cases, the number of samples needs to be higher than usual to give valid results.

## Large intervals
If the interval is larger than usual (for example, if we're testing the limits of number formats), the number of samples needed to have a dense covering of the interval is higher.
On these interval, the `analyzeUnaryMethod` and `analyzeBinaryMethod` functions can measure a precision that is coarser than the actual ground-truth precision, because it didn't draw enough samples to land on a minimal gap.
This should not be taken as an indicator that the implemented interval function is incorrect.
Increasing the number of samples should solve the issue.

## Binary functions
A binary function has two input intervals, and thus the domain to cover with the sampling is quadratically larger than for a unary function with similar input interval.
Thus, the number of samples needed is the square of the number needed to have the same results for a unary function.

60 changes: 60 additions & 0 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Test d'intervalles prenant en compte la précision
Deux possibilités:
* soit on impose que la précision soit exactement la meme
* soit on ne l'impose pas

Ou est utilisé == ?
* dans <=, donc ca a son importance
i<=j <=> reunion(i, j) == j
reunion prend en compte la précision: le résultat a la précision la plus fine des deux opérandes

i<=j pourrait prendre la précision en considération, et considérer que la précision de i doit etre plus grossière que celle de j (toutes les valeurs de i sont présentes dans j)

Ou est utilisé <=?
Dans `check.cpp > analyzeUnaryMethod`, mais en conjonction avec un test sur les précisions (à l'extérieur).

**Conclusion:** Il vaut peut-etre mieux que la précision reste en-dehors des tests, quitte à la rajouter après.

# `check.cpp > check`

Est-ce qu'il faut prendre en compute la précision ici?
C'est une fonction void et non booléenne, qui affiche le résultat, donc on a plus de nuances à notre portée.
=> Afficher un cas ou les précisions sont égales et un cas ou elles sont différentes
(plutot un amendement lorsqu'elles )

# Warnings

**Note:** Ils sont tous dans soit dans `tlib`, soit dans `check.cpp`.
Dans le premier cas, cela concerne les auteurs de la librairie.
Dans le deuxième cas, il suffit de modifier quelque chose dans ce fichier pour faire réapparaître les warnings.

## Cast float en int en sortie de truncate

### Contexte

Certaines primitives ont des comportements différents lorsqu'elles sont appliquées à des entiers.
Ces primitives sont avant touts des fonctions binaires (Add, Mult), c'est pourquoi la fonction `analyzeBinaryMethod` présente deux branches selon que la précision des intervalles d'entrée soit `<0` (indicateur d'une opération flottante) ou `>= 0` (indicateur d'une opération entière).

# Erreurs dans les tests

## Singletons

La précision mesurée d'un singleton est de `INT_MAX`, car il faut au moins deux points dans un intervalle pour mesurer correctement une précision.

**Solution:** Ne pas comparer la précision lorsqu'on est sur un singleton.

# Fonctions d'intervalles à compléter

## Rem
Refaire le meme raisonnement que pour Mod, en prenant en compte les changements dûs à tie to even.

## Fonctions trigonométriques
Refaire le raisonnement des Taylor fallback.

## Probablement d'autres fonctions
Faire une passe sur toutes les primitives pour vérifier que tout est en ordre.

# Documentation
- Méthodes de test avec les différents pitfall/edge cases (singletons, ensembles vides etc)
- Backwards propagation
- Fuzzy precision

0 comments on commit 3060d4c

Please sign in to comment.