Hi,

Here is a new take on the computational precision paragraph:

#### 8.3.8 Computational Precision

The accuracy of the reconstituted coordinates will depend on the degree of 
subsampling, the choice of interpolation method and the choice of the 
floating-point arithmetic precision used in the interpolation method 
computations.

Implementation details of the interpolation methods and hardware can also have 
an impact on the accuracy of the reconstituted coordinates.

The creator of the compressed dataset must check that the coordinates 
reconstituted using the interpolation parameters specified in the file have 
sufficient accuracy compared to the coordinates at full resolution.

Although it may depend on the software and hardware used by the creator, the 
floating-point arithmetic precision used during this validation step must be 
specified in the `computational_precision` attribute of the interpolation 
method as an indication of potential floating-point precision issues during the 
interpolation computations.

The `computational_precision` attribute is mandatory and accepts the following 
values:

(table)
"32": 32-bit floating-point arithmetic, comparable to the binary32 standard in 
[IEEE_754]
"64": 64-bit floating-point arithmetic, comparable to the binary64 standard in 
[IEEE_754]

For the coordinates reconstitution process, using a floating-point arithmetic 
precision matching or exceeding the precision specified by 
`computational_precision` is likely to produce results with an accuracy similar 
to what the creator obtained during the validation of the dataset, but it 
cannot be guaranteed due to the software/hardware factor.

As an example, `computational_precision = "64"` would specify that, using the 
same software and hardware as the creator of the compressed dataset, sufficient 
accuracy could not be reached when using a floating-point precision lower than 
64-bit floating-point arithmetic in the interpolation computations required to 
reconstitute the coordinates.

**Bibliography**
**References**

[IEEE_754] [IEEE Standard for Floating-Point 
Arithmetic](https://urldefense.us/v3/__https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8766229&isnumber=8766228__;!!G2kpM7uM-TzIFchu!h6g5VosoxJPZrjMnqKldnCSEYC-DjpPbYuBWm5Jd1jE2UXrJvx-8VuSHQj4VI5g_zrcX2-BLYGI$
 ), in IEEE Std 754-2019 (Revision of IEEE 754-2008) , vol., no., pp.1-84, 22 
July 2019, doi: 10.1109/IEEESTD.2019.8766229.


---

#### Rationale:

The accuracy of the interpolation methods depends not only on the choices made
by the data producer (tie points density, area subdivisions, interpolation
method parameters, etc...) but also on the software (programming language,
libraries) and on the hardware (CPU/FPU) used by the data consumers.

The data producers only know about their own software and hardware, so the
computational_precision attribute can only mean that the data producer used
this floating point precision when they validated these data using their
implementation of the interpolation method, not that using this floating point
precision on any software/hardware combination will produce exactly the same
results.

I think the computational_precision attribute can only be considered as a hint
provided by the data producer regarding numerical issues they encountered when
trying to reconstruct the target variables at their full resolution with their
implementation of the interpolation method: if the computational_precision
exceeds the precision of the data type (e.g. a "64" computational_precision
used when interpolating a float variables), then users know that the data
producer did not obtain satisfying results when using a lower precision, hence
they should be wary of underflow/overflow errors when they interpolate these
data. So computational_precision is more of an informational hint than a
compulsory instruction given to the users (unless @erget 's CF police becomes
a reality), and it is not a reproductibility guarantee either.

Yet it is still a useful piece of information and no one except the data
producer can provide it since you need access to the original data at their
native resolution to make actual checks on the accuracy of the interpolation
method. As the information cannot be derived from the content of the file it
makes sense to require that data producers include this attribute
systematically: the computational_precision should be mandatory.

Sylvain

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://urldefense.us/v3/__https://github.com/cf-convention/cf-conventions/issues/327*issuecomment-872178234__;Iw!!G2kpM7uM-TzIFchu!h6g5VosoxJPZrjMnqKldnCSEYC-DjpPbYuBWm5Jd1jE2UXrJvx-8VuSHQj4VI5g_zrcX6hbMb2s$
 
This list forwards relevant notifications from Github.  It is distinct from 
[email protected], although if you do nothing, a subscription to the 
UCAR list will result in a subscription to this list.
To unsubscribe from this list only, send a message to 
[email protected].

Reply via email to