Files

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