Update float docs (#16695) (#16726)

(cherry picked from commit bb2b4c7e0b)

Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
mergify[bot]
2021-04-21 22:55:00 +00:00
committed by GitHub
parent 7cc709c82a
commit 147ba1de69

View File

@ -92,10 +92,32 @@ specific needs.
## Float Support ## Float Support
Programs support a limited subset of Rust's float operations, though they are Programs support a limited subset of Rust's float operations, if a program
highly discouraged due to the overhead involved. If a program attempts to use a attempts to use a float operation that is not supported, the runtime will report
float operation that is not supported, the runtime will report an unresolved an unresolved symbol error.
symbol error.
Float operations are performed via software libraries, specifically LLVM's float
builtins. Due to be software emulated they consume more compute units than
integer operations. In general, fixed point operations are recommended where
possible.
The Solana Program Library math tests will report the performance of some math
operations:
https://github.com/solana-labs/solana-program-library/tree/master/libraries/math
To run the test, sync the repo, and run:
`$ cargo test-bpf -- --nocapture --test-threads=1`
Recent results show the float operations take more instructions compared to
integers equivalents. Fixed point implementations may vary but will also be
less then the float equivalents:
```
u64 f32
Multipy 8 176
Divide 9 219
```
## Static Writable Data ## Static Writable Data