long.c 486 Bytes
/* See the "Run-time ABI for the ARM Architecture", Section 4.1.2 */

#include "float.h"

// Conversions

aeabi_float_t __aeabi_l2f(int64_t i) {
  return f(i64_to_f32(i));
}

aeabi_double_t __aeabi_l2d(int64_t i) {
  return d(i64_to_f64(i));
}

aeabi_double_t __aeabi_ul2d(uint64_t i) {
  return d(ui64_to_f64(i));
}

int64_t __aeabi_f2lz(aeabi_float_t x) {
  return f32_to_i64_r_minMag(f32(x), 0);
}

int64_t __aeabi_d2lz(aeabi_double_t x) {
  return f64_to_i64_r_minMag(f64(x), 0);
}