+[[!tag standards]]
+
# Zftrans - transcendental operations
+Summary:
+
+*This proposal extends RISC-V scalar floating point operations to add IEEE754 transcendental functions (pow, log etc) and trigonometric functions (sin, cos etc). These functions are also 98% shared with the Khronos Group OpenCL Extended Instruction Set.*
+
With thanks to:
* Jacob Lifshay
This proposal is designed to meet a wide range of extremely diverse needs,
allowing implementors from all of them to benefit from the tools and hardware
-cost reductions associated with common standards adoption.
+cost reductions associated with common standards adoption in RISC-V (primarily IEEE754 and Vulkan).
**There are *four* different, disparate platform's needs (two new)**:
may not be sold and also make a claim of being, for example, "Vulkan
compatible".
-This in turn reinforces and makes a hard requirement a need for public
+For 3D, this in turn reinforces and makes a hard requirement a need for public
compliance with such standards, over-and-above what would otherwise be
set by a RISC-V Standards Development Process, including both the
software compliance and the knock-on implications that has for hardware.
+For libraries such as libm and numpy, accuracy is paramount, for software interoperability across multiple platforms. Some algorithms critically rely on correct IEEE754, for example.
+The conflicting accuracy requirements can be met through the zfpacc extension.
+
**Collaboration**:
The case for collaboration on any Extension is already well-known.
FLOG10 | log10 | half\_log10 | native\_log10 | NONE | log10 |
FPOW | pow | NONE | NONE | NONE | pow |
FPOWN | pown | NONE | NONE | NONE | pown |
-FPOWR | powr | NONE | NONE | NONE | powr |
+FPOWR | powr | half\_powr | native\_powr | NONE | powr |
FROOTN | rootn | NONE | NONE | NONE | rootn |
FHYPOT | hypot | NONE | NONE | NONE | hypot |
FRECIP | NONE | half\_recip | native\_recip | NONE | NONE (3) |
Note (1) FSINCOS is macro-op fused (see below).
-Note (2) IEEE754-2019 pown(x, n) - n is an integer
-
-Note (3) IEEE754-2019 powr(x, y) is defined as "exp(y log (x))"
-
Note (2) synthesised in IEEE754-2019 as "pown(x, 3)"
Note (3) synthesised in IEEE754-2019 using "1.0 / x"