harec

[hare] Hare compiler, written in C11 for POSIX OSs
Log | Files | Refs | README | LICENSE

35-floats.ha (1834B)


      1 fn signed_casts() void = {
      2 	let a = 20f64;
      3 	let f = a: f32;
      4 	assert(f == 20f32);
      5 	let i = a: i8;
      6 	assert(i == 20);
      7 	let i = a: i16;
      8 	assert(i == 20);
      9 	let i = a: i16;
     10 	assert(i == 20);
     11 	let i = a: i32;
     12 	assert(i == 20);
     13 	let i = a: i64;
     14 	assert(i == 20);
     15 
     16 	let a = 20f32;
     17 	let f = a: f64;
     18 	assert(f == 20f64);
     19 	let i = a: i8;
     20 	assert(i == 20);
     21 	let i = a: i16;
     22 	assert(i == 20);
     23 	let i = a: i16;
     24 	assert(i == 20);
     25 	let i = a: i32;
     26 	assert(i == 20);
     27 	let i = a: i64;
     28 	assert(i == 20);
     29 
     30 	let a = 20i8;
     31 	let f = a: f32;
     32 	assert(f == 20f32);
     33 	let f = a: f64;
     34 	assert(f == 20f64);
     35 
     36 	let a = 20i16;
     37 	let f = a: f32;
     38 	assert(f == 20f32);
     39 	let f = a: f64;
     40 	assert(f == 20f64);
     41 
     42 	let a = 20i32;
     43 	let f = a: f32;
     44 	assert(f == 20f32);
     45 	let f = a: f64;
     46 	assert(f == 20f64);
     47 
     48 	let a = 20i64;
     49 	let f = a: f32;
     50 	assert(f == 20f32);
     51 	let f = a: f64;
     52 	assert(f == 20f64);
     53 };
     54 
     55 fn unsigned_casts() void = {
     56 	let a = 20f64;
     57 	let f = a: f32;
     58 	assert(f == 20f32);
     59 	let i = a: u8;
     60 	assert(i == 20);
     61 	let i = a: u16;
     62 	assert(i == 20);
     63 	let i = a: u16;
     64 	assert(i == 20);
     65 	let i = a: u32;
     66 	assert(i == 20);
     67 	let i = a: u64;
     68 	assert(i == 20);
     69 
     70 	let a = 20f32;
     71 	let f = a: f64;
     72 	assert(f == 20f64);
     73 	let i = a: u8;
     74 	assert(i == 20);
     75 	let i = a: u16;
     76 	assert(i == 20);
     77 	let i = a: u16;
     78 	assert(i == 20);
     79 	let i = a: u32;
     80 	assert(i == 20);
     81 	let i = a: u64;
     82 	assert(i == 20);
     83 
     84 	let a = 20u8;
     85 	let f = a: f32;
     86 	assert(f == 20f32);
     87 	let f = a: f64;
     88 	assert(f == 20f64);
     89 
     90 	let a = 20u16;
     91 	let f = a: f32;
     92 	assert(f == 20f32);
     93 	let f = a: f64;
     94 	assert(f == 20f64);
     95 
     96 	let a = 20u32;
     97 	let f = a: f32;
     98 	assert(f == 20f32);
     99 	let f = a: f64;
    100 	assert(f == 20f64);
    101 
    102 	let a = 20u64;
    103 	let f = a: f32;
    104 	assert(f == 20f32);
    105 	let f = a: f64;
    106 	assert(f == 20f64);
    107 };
    108 
    109 
    110 export fn main() void = {
    111 	// TODO: test parsing, compile-time evaluation
    112 	signed_casts();
    113 	unsigned_casts();
    114 };