title: gcc CortexM4 single precision FPU: Why uses eg. 'powf' double precision functions eg '__extendsfdf2' or '__aeabi_ddiv'
body: <p>While checking for a STM32F4 Cortex M4 with GCC compiled list file I wonder why many double precision float functions are linked, eg:</p>
  
  <blockquote>
    <p>__aeabi_drsub<br>
    __aeabi_dsub<br>
    __subdf3<br>
    __aeabi_dadd<br>
    __adddf3<br>
    __floatunsidf<br>
    __aeabi_ui2d<br>
    __floatsidf<br>
    __aeabi_i2d<br>
    __aeabi_f2d<br>
    __extendsfdf2<br>
    __floatundidf<br>
    __aeabi_ul2d<br>
    __floatdidf<br>
    __aeabi_l2d  </p>
  </blockquote>
  
  <p>I'm using flags to avoid any double calculation:
  -fsingle-precision-constant
  -Wdouble-promotion</p>
  
  <p>and I added 'f' behind every constants, eg '2.3f'</p>
  
  <p>Is there any possibility to avoid this?</p>