1
@import("sprintf") multi sprintf : ( : raw_array「abi_char」, : raw_array「abi_char」, : abi_var_args ) -> ( : abi_int ) raw no_throw
3
@export defn print = (x : float) -> {
4
print( float_to_ascii(x) )
7
@export defn float_to_ascii = (x : float)-> {
8
var buf = type「 array「abi_char」 」(128)
9
var q = type「 array「abi_char」 」(3)
10
q#0 = lossy(code_val('%'))
11
q#1 = lossy(code_val('g'))
13
ignore sprintf( buf, q, [x] )
15
var len = abi_strlen(buf)
16
var str = type「 array「char」 」(len)
17
for at in range(0,len) {
18
str#at = char_val(buf#at)
24
var abi_strlen = (buf : array「abi_char」) -> {
32
@import("frexp") defn frexp : ( : abi_double, : abi_int value_ptr ) -> ( : abi_double ) raw no_throw
33
@import("ldexp") defn ldexp : ( : abi_double, : abi_int ) -> ( : abi_double ) raw no_throw
34
@import("nextafter") defn nextafter : ( : abi_double, : abi_double ) -> ( : abi_double ) raw no_throw
36
@export defn split_float = (x : float) -> ( significand : float, exponent : integer ) {
37
var xa = (x : abi_double)
39
var sig = frexp( xa, exp )
43
@export defn pow2 = ( x: float, e : integer ) -> ( : float ) {
44
return ldexp( x, lossy(e) )
47
@export defn next_float = ( x : float, direction : float ) -> ( : float ) {
48
return nextafter( x, direction )