Skip to content
Snippets Groups Projects
Select Git revision
  • 92774919c80033d20826a091a047dfbcc8f799af
  • master default protected
  • add-joust
  • blinkisync-as-preload
  • genofire/rockets-state
  • genofire/leds_rgb_get_state
  • genofire/ble-follow-py
  • genofire/haule-ble-fs-deactive
  • hauke/ble-cleanups
  • plaetzchen/ios-workaround
  • schneider/max30001-pycardium
  • schneider/max30001-epicaridum
  • schneider/max30001
  • schneider/stream-locks
  • ios-workarounds
  • schneider/fundamental-test
  • schneider/ble-buffers
  • schneider/maxim-sdk-update
  • rahix/simple_menu
  • ch3/splashscreen
  • koalo/bhi160-works-but-dirty
  • v1.7
  • v1.6
  • v1.5
  • v1.4
  • v1.3
  • v1.2
  • v1.1
  • v1.0
  • release-1
  • bootloader-v1
  • v0.0
32 results

interrupt.h

Blame
  • Forked from card10 / firmware
    Source project has a limited visibility.
    roundf.c 762 B
    /*****************************************************************************/
    /*****************************************************************************/
    // roundf from musl-0.9.15
    /*****************************************************************************/
    /*****************************************************************************/
    
    #include "libm.h"
    
    float roundf(float x)
    {
    	union {float f; uint32_t i;} u = {x};
    	int e = u.i >> 23 & 0xff;
    	float_t y;
    
    	if (e >= 0x7f+23)
    		return x;
    	if (u.i >> 31)
    		x = -x;
    	if (e < 0x7f-1) {
    		FORCE_EVAL(x + 0x1p23f);
    		return 0*u.f;
    	}
    	y = (float)(x + 0x1p23f) - 0x1p23f - x;
    	if (y > 0.5f)
    		y = y + x - 1;
    	else if (y <= -0.5f)
    		y = y + x + 1;
    	else
    		y = y + x;
    	if (u.i >> 31)
    		y = -y;
    	return y;
    }