~ruther/qmk_firmware

9b3ac793bca14dc5efd424ba28324937b7bed40d — フィルターペーパー 1 year, 10 months ago a0ea7a6
Refactor times inverse of sqrt 2 calculation (#21293)

1 files changed, 10 insertions(+), 5 deletions(-)

M quantum/mousekey.c
M quantum/mousekey.c => quantum/mousekey.c +10 -5
@@ 25,11 25,16 @@
#include "mousekey.h"

static inline int8_t times_inv_sqrt2(int8_t x) {
    // 181/256 is pretty close to 1/sqrt(2)
    // 0.70703125                 0.707106781
    // 1 too small for x=99 and x=198
    // This ends up being a mult and discard lower 8 bits
    return (x * 181) >> 8;
    // 181/256 (0.70703125) is used as an approximation for 1/sqrt(2)
    // because it is close to the exact value which is 0.707106781
    const int16_t  n = x * 181;
    const uint16_t d = 256;

    // To ensure that the integer result is rounded accurately after
    // division, check the sign of the numerator:
    // If negative, subtract half of the denominator before dividing
    // Otherwise, add half of the denominator before dividing
    return n < 0 ? (n - d / 2) / d : (n + d / 2) / d;
}

static report_mouse_t mouse_report = {0};

Do not follow this link