P3.4: transcribe plugin's own vectorized ln(x) (vlog.cpp, minimax ln(1+x) poly + ln2 range-reduction); correct prior misread — dispatch reaches runtime ln, not FFT; vlog_check ALL OK (rel 2.4e-7)
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user