diff options
author | Szabolcs Nagy <nsz@port70.net> | 2018-12-01 00:40:47 +0000 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2019-04-17 23:44:59 -0400 |
commit | 236cd056e871acb8731cd84b5bfb6f0feb646589 (patch) | |
tree | ecdff2e63f92275d44f4d07af01f5e31193c8d1a /src/math/log_data.h | |
parent | d28cd0ad428d63c186003fdf9c02470561650a04 (diff) | |
download | musl-236cd056e871acb8731cd84b5bfb6f0feb646589.tar.gz |
math: new log
from https://github.com/ARM-software/optimized-routines,
commit 04884bd04eac4b251da4026900010ea7d8850edc
Assume __FP_FAST_FMA implies __builtin_fma is inlined as a single
instruction.
code size change: +4588 bytes (+2540 bytes with fma).
benchmark on x86_64 before, after, speedup:
-Os:
log rthruput: 12.61 ns/call 7.95 ns/call 1.59x
log latency: 41.64 ns/call 23.38 ns/call 1.78x
-O3:
log rthruput: 12.51 ns/call 7.75 ns/call 1.61x
log latency: 41.82 ns/call 23.55 ns/call 1.78x
Diffstat (limited to 'src/math/log_data.h')
-rw-r--r-- | src/math/log_data.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/math/log_data.h b/src/math/log_data.h new file mode 100644 index 00000000..1be22ab2 --- /dev/null +++ b/src/math/log_data.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +#ifndef _LOG_DATA_H +#define _LOG_DATA_H + +#include <features.h> + +#define LOG_TABLE_BITS 7 +#define LOG_POLY_ORDER 6 +#define LOG_POLY1_ORDER 12 +extern hidden const struct log_data { + double ln2hi; + double ln2lo; + double poly[LOG_POLY_ORDER - 1]; /* First coefficient is 1. */ + double poly1[LOG_POLY1_ORDER - 1]; + struct { + double invc, logc; + } tab[1 << LOG_TABLE_BITS]; +#if !__FP_FAST_FMA + struct { + double chi, clo; + } tab2[1 << LOG_TABLE_BITS]; +#endif +} __log_data; + +#endif |