diff --git a/k_exp.cpp b/k_exp.cpp --- a/k_exp.cpp +++ b/k_exp.cpp @@ -24,18 +24,16 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ //#include //__FBSDID("$FreeBSD$"); -#include - #include "math_private.h" static const uint32_t k = 1799; /* constant for reduction */ static const double kln2 = 1246.97177782734161156; /* k * ln2 */ /* * Compute exp(x), scaled to avoid spurious overflow. An exponent is * returned separately in 'expt'. @@ -78,33 +76,8 @@ __ldexp_exp(double x, int expt) double exp_x, scale; int ex_expt; exp_x = __frexp_exp(x, &ex_expt); expt += ex_expt; INSERT_WORDS(scale, (0x3ff + expt) << 20, 0); return (exp_x * scale); } - -double complex -__ldexp_cexp(double complex z, int expt) -{ - double c, exp_x, s, scale1, scale2, x, y; - int ex_expt, half_expt; - - x = creal(z); - y = cimag(z); - exp_x = __frexp_exp(x, &ex_expt); - expt += ex_expt; - - /* - * Arrange so that scale1 * scale2 == 2**expt. We use this to - * compensate for scalbn being horrendously slow. - */ - half_expt = expt / 2; - INSERT_WORDS(scale1, (0x3ff + half_expt) << 20, 0); - half_expt = expt - half_expt; - INSERT_WORDS(scale2, (0x3ff + half_expt) << 20, 0); - - sincos(y, &s, &c); - return (CMPLX(c * exp_x * scale1 * scale2, - s * exp_x * scale1 * scale2)); -} --- a/k_expf.cpp 2022-12-13 14:39:11.791594163 -0500 +++ b/k_expf.cpp 2022-12-13 14:39:18.631622916 -0500 @@ -24,18 +24,16 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ //#include //__FBSDID("$FreeBSD$"); -#include - #include "math_private.h" static const uint32_t k = 235; /* constant for reduction */ static const float kln2 = 162.88958740F; /* k * ln2 */ /* * See k_exp.c for details. * @@ -61,29 +59,8 @@ float exp_x, scale; int ex_expt; exp_x = __frexp_expf(x, &ex_expt); expt += ex_expt; SET_FLOAT_WORD(scale, (0x7f + expt) << 23); return (exp_x * scale); } - -float complex -__ldexp_cexpf(float complex z, int expt) -{ - float c, exp_x, s, scale1, scale2, x, y; - int ex_expt, half_expt; - - x = crealf(z); - y = cimagf(z); - exp_x = __frexp_expf(x, &ex_expt); - expt += ex_expt; - - half_expt = expt / 2; - SET_FLOAT_WORD(scale1, (0x7f + half_expt) << 23); - half_expt = expt - half_expt; - SET_FLOAT_WORD(scale2, (0x7f + half_expt) << 23); - - sincosf(y, &s, &c); - return (CMPLXF(c * exp_x * scale1 * scale2, - s * exp_x * scale1 * scale2)); -}