The following operations are implemented as CUDA kernels. All operations are correctly-rounded, given the limitations of the precision of the underlying CUDA operation. The tightest interval is always a subset
of the computed interval. For most operations, the lower and upper bounds of the basic operations are at most 3 ulps away from the lower and upper bounds of the tightest interval, respectively.
The error for a particular operation is given below.
| Operation | Function Description | Error [ulps] |
|---|
| neg | IR→IR | 0 |
| add | IR2→IR | 0 |
| sub | IR2→IR | 0 |
| mul | IR2→IR | 0 |
| div | IR2→IR | 0 |
| recip | IR→IR | 0 |
| sqr | IR→IR≥0 | 0 |
| sqrt | IR≥0→IR≥0 | 0 |
| fma | IR3→IR | 0 |
| mig | IR→R | 0 |
| mag | IR→R | 0 |
| rad | IR→R | 0 |
| abs | IR→IR≥0 | 0 |
| min | IR2→IR | 0 |
| max | IR2→IR | 0 |
| cbrt | IR→IR | 1 |
| fabs | IR→IR≥0 | 0 |
| fmax | IR2→IR | 0 |
| fmin | IR2→IR | 0 |
| Operation | Function Description | Error [ulps] |
|---|
| inf | IR→R | 0 |
| sup | IR→R | 0 |
| mid | IR→R | 0 |
| width | IR→R≥0 | 0 |
| Operation | Function Description | Error [ulps] |
|---|
| floor | IR→IR | 0 |
| ceil | IR→IR | 0 |
| trunc | IR→IR | 0 |
| sign | IR→{−1,0,1} | 0 |
| round | IR→IR | 0 |
| nearbyint | IR→IR | 0 |
| rint | IR→IR | 0 |
| fdim | IR2→IR | 0 |
| round_to_nearest_even | IR→IR | 0 |
| round_ties_to_away | IR→IR | 0 |
| Operation | Function Description | Error [ulps] |
|---|
| intersection | IR2→IR | 0 |
| convex_hull | IR2→IR | 0 |
| hull | IR2→IR | 0 |
| Operation | Function Description | Error [ulps] |
|---|
| equal | IR2→B | 0 |
| subset | IR2→B | 0 |
| interior | IR2→B | 0 |
| disjoint | IR2→B | 0 |
| less | IR2→B | 0 |
| precedes | IR2→B | 0 |
| empty | IR→B | 0 |
| entire | IR→B | 0 |
| just_zero | IR→B | 0 |
| contains | IR×R→B | 0 |
| bounded | IR→B | 0 |
| isfinite | IR→B | 0 |
| strict_less_or_both_inf | R2→B | 0 |
| strict_less | IR2→B | 0 |
| strict_precedes | IR2→B | 0 |
| isinf | IR→B | 0 |
| isnai | IR→B | 0 |
| is_member | R×IR→B | 0 |
| is_singleton | IR→B | 0 |
| is_common_interval | IR→B | 0 |
| isnormal | IR→B | 0 |
| is_atomic | IR→B | 0 |
| Operation | Function Description | Error [ulps] |
|---|
| exp | IR→IR≥0 | 3 |
| exp2 | IR→IR≥0 | 3 |
| exp10 | IR→IR≥0 | 3 |
| expm1 | IR→IR≥−1 | 3 |
| log | IR→IR | 3 |
| log2 | IR→IR | 3 |
| log10 | IR→IR | 3 |
| log1p | IR→IR | 3 |
| pown | IR×Z→IR | 1 |
| pow | IR×R→IR | 1 |
| rootn | IR×Z→IR | 2 |
| ldexp | IR×Z→IR | 0 |
| scalbln | IR×Z→IR | 0 |
| scalbn | IR×Z→IR | 0 |
| logb | IR→IR | 0 |
| Operation | Function Description | Error [ulps] |
|---|
| sin | IR→IR | 2 |
| cos | IR→IR | 2 |
| tan | IR→IR | 3 |
| asin | IR→IR | 3 |
| acos | IR→IR | 3 |
| atan | IR→IR | 3 |
| atan2 | IR2→IR | 3 |
| cot | IR→IR | 4 |
| sinpi | IR→IR | 3 |
| cospi | IR→IR | 3 |
| Operation | Function Description | Error [ulps] |
|---|
| sinh | IR→IR | 3 |
| cosh | IR→IR≥1 | 2 |
| coth | IR→IR | 3 |
| tanh | IR→IR | 2 |
| arcsinh | IR→IR | 3 |
| arccosh | IR→IR | 3 |
| arctanh | IR→IR | 3 |
| Operation | Function Description | Error [ulps] |
|---|
| hypot | IR2→IR≥0 | 0 |
| erf | IR→IR | 2 |
| erfc | IR→IR≥0 | 5 |
| bisect | IR×R→R | 0 |
| mince | IR×IR×N→R | 0 |
| Operation | Function Description | Error [ulps] |
|---|
| cancel_minus | IR2→IR | 0 |
| cancel_plus | IR2→IR | 0 |