21 lines
871 B
C++
21 lines
871 B
C++
#pragma once
|
|
#include <cstdint>
|
|
|
|
namespace vlog {
|
|
|
|
// Scalar transcription of the vectorized natural-logarithm kernel at 0x1802a24c0
|
|
// (soothe2 VST3, MSVC x86-64 AVX2, extracted from /tmp/snap_rt.bin).
|
|
//
|
|
// The kernel computes dst[i] = ln(src[i]) elementwise in single precision,
|
|
// using its own minimax polynomial + ln(2) range reduction driven by float
|
|
// bit-manipulation (the "2/3" magic exponent/mantissa split). A scalar
|
|
// double-precision Cody-Waite ln handles the slow path for special values.
|
|
//
|
|
// NOTE: despite the file name, this kernel is a natural logarithm, NOT an FFT
|
|
// butterfly. It sits in the spectral (log-magnitude) processing path, not the
|
|
// complex FFT transform. The signature below mirrors the actual code: float,
|
|
// out-of-place, real (src != dst is allowed).
|
|
void log_f32(const float* src, float* dst, uint32_t n);
|
|
|
|
} // namespace vlog
|