aboutsummaryrefslogtreecommitdiff
path: root/tests/programs/cabi_sized.zc
blob: d1dc2ba8a97e710f78012433b834f4c15ec31f6c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// extern and cfunc with f32 and the sized integers
extern f32 sqrtf(f32);
extern f64 hypot(f64, f64);
extern i32 abs(i32);
extern u8 toupper(u8);
extern long labs(long);
fn put_f(x) { asm { x @ #1220 } return 0; }
fn sp() { put_c(32); return 0; }
extern void qsort(word *base, long n, long size, void *cmp);
i32 cmpi(int* a, int* b) { return *a - *b; }
f32 half(f32 v) { return v / 2; }
fn main() {
	f32 r = sqrtf(2.0);
	put_f(r); sp();
	put_n(r == sqrtf(2.0)); sp();
	put_f(hypot(3.0, 4.0)); sp();
	put_n(abs(0 - 77)); sp();
	put_n(toupper(97)); sp();
	i32 big = 0 - 5;
	put_n(abs(big)); sp();
	int v[4];
	v[0] = 4; v[1] = 1; v[2] = 3; v[3] = 2;
	qsort(v, 4, 8, cfunc(cmpi));
	put_n(v[0]); put_n(v[1]); put_n(v[2]); put_n(v[3]); sp();
	put_f(half(5.0));
	put_c(10);
	return 0;
}