小编n-w*_*est的帖子

通过分离有效数和指数来近似log2(浮点数)

问题

我正在尝试实现一个快速浮点数= log2(浮点数).我写了一个简单的C程序来比较我的结果和log2,我得到一个小错误,我找不到源代码.

背景

我正在采用识别浮点表示(忽略符号位)的方法2^(exponent) * 1.significand.使用我得到的日志属性log2(float) = exp + log2(1.significand).最终我会截断表查找的有效数字,但是现在我想验证正确的结果.

有关灵感的进一步背景阅读:http://www.icsi.berkeley.edu/pubs/techreports/TR-07-002.pdf

这就是问题所在.这是一个简单的程序,它提取浮点位并将指数加到log2(有效数字).

#include <math.h>
#include <stdint.h>
#include <stdio.h>

int main()
{
    typedef union {
      int32_t i;
      float f;
    } poly32_t;

    float x = 31415926535.8;
    poly32_t one;
    one.f = 1.0f;

    uint32_t ii;
    uint32_t num_iter = 15;
    for(ii=0; ii < num_iter; ++ii) {
        poly32_t poly_x;
        poly32_t poly_x_exponent;
        poly32_t poly_x_significand;

        // extract the exponent and significand
        poly_x.f = x;
        poly_x_significand.i = (0x007fffff & poly_x.i); …
Run Code Online (Sandbox Code Playgroud)

c math approximation function-approximation

6
推荐指数
1
解决办法
423
查看次数

标签 统计

approximation ×1

c ×1

function-approximation ×1

math ×1