|
| 1 | +# Step size (h) and tolerances (atol, rtol) by test mode |
| 2 | + |
| 3 | +Generated from `run_tapenade_cblas.py` test generators. Pass criterion: `|error| <= atol + rtol * |reference|`. |
| 4 | + |
| 5 | +## Consistency by category |
| 6 | + |
| 7 | +| Mode | Consistent? | Exceptions | |
| 8 | +|------|-------------|------------| |
| 9 | +| **\_d** | **Yes** | All _d tests use the same h, atol, rtol (single: 1e-3, 2e-3, 2e-3; double: 1e-6, 1e-5, 1e-5). | |
| 10 | +| **\_dv** | **Yes** | All _dv tests use the same values (single: 1e-3, 5e-3, 5e-3; double: 1e-6, 1e-5, 1e-5). | |
| 11 | +| **\_b** | **No** | **nrm2** (dnrm2_b, snrm2_b): single atol=rtol=**2.0e-3**; all others: single atol=rtol=1.0e-2. Double and h are the same. | |
| 12 | +| **\_bv** | **No** | **Scalar-result** (dasum_bv, sasum_bv, ddot_bv, sdot_bv, dnrm2_bv, snrm2_bv): double **h=1.0e-6** and single atol=rtol=**2.0e-3**; generic/gemm _bv: double h=1.0e-7, single atol=rtol=1.0e-2. | |
| 13 | + |
| 14 | +## Full table |
| 15 | + |
| 16 | +| Mode | Category | Precision | h (step size) | atol | rtol | |
| 17 | +|------|----------|-----------|---------------|------|------| |
| 18 | +| **\_d** | Forward scalar | Single (s, c) | 1.0e-3 | 2.0e-3 | 2.0e-3 | |
| 19 | +| **\_d** | Forward scalar | Double (d, z) | 1.0e-6 | 1.0e-5 | 1.0e-5 | |
| 20 | +| **\_dv** | Forward vector | Single (s, c) | 1.0e-3 | 5.0e-3 | 5.0e-3 | |
| 21 | +| **\_dv** | Forward vector | Double (d, z) | 1.0e-6 | 1.0e-5 | 1.0e-5 | |
| 22 | +| **\_b** | Reverse scalar (generic, gemm) | Single (s, c) | 1.0e-3 | 1.0e-2 | 1.0e-2 | |
| 23 | +| **\_b** | Reverse scalar (generic, gemm) | Double (d, z) | 1.0e-7 | 1.0e-5 | 1.0e-5 | |
| 24 | +| **\_b** | Reverse scalar (nrm2 only) | Single (s, c) | 1.0e-3 | **2.0e-3** | **2.0e-3** | |
| 25 | +| **\_b** | Reverse scalar (nrm2 only) | Double (d, z) | 1.0e-7 | 1.0e-5 | 1.0e-5 | |
| 26 | +| **\_bv** | Reverse vector (generic VJP, gemm) | Single (s, c) | 1.0e-3 | 1.0e-2 | 1.0e-2 | |
| 27 | +| **\_bv** | Reverse vector (generic VJP, gemm) | Double (d, z) | 1.0e-7 | 1.0e-5 | 1.0e-5 | |
| 28 | +| **\_bv** | Reverse vector (scalar-result: dasum, ddot, nrm2, etc.) | Single (s, c) | 1.0e-3 | **2.0e-3** | **2.0e-3** | |
| 29 | +| **\_bv** | Reverse vector (scalar-result) | Double (d, z) | **1.0e-6** | 1.0e-5 | 1.0e-5 | |
| 30 | + |
| 31 | +## Notes |
| 32 | + |
| 33 | +- **\_d**: Matches Fortran BLAS forward tests (e.g. `test_sgemm.f90` / `test_dgemm.f90`). |
| 34 | +- **\_dv**: Same h as _d; atol/rtol slightly looser for single precision (5.0e-3) for multi-direction FD. |
| 35 | +- **\_b** / **\_bv** (generic): VJP check; smaller h (1.0e-7 for double) for central-difference stability; looser single-precision tolerances (1.0e-2). |
| 36 | +- **\_bv** (nrm2-style): Used for scalar-result routines (e.g. snrm2_bv, dnrm2_bv); h and atol/rtol aligned with nrm2 _b/_dv tests. |
| 37 | +- **nrm2 _b** (reverse scalar): Same as generic _b (h=1.0e-7 double / 1.0e-3 float; atol=rtol=1.0e-5 double / 1.0e-2 float). **nrm2 _d** uses h=1.0e-7 double, atol=rtol=1.0e-5; single uses h=1.0e-3, atol=rtol=2.0e-3. |
0 commit comments