summaryrefslogtreecommitdiff
path: root/test/sqrt.myr
blob: 98b80ea5d5a684545693240305b18dd7a8bd75ca (plain)
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
29
30
31
32
33
34
35
36
use std

const abs = {d
	if d < 0.0
		-> -d
	else
		-> d
	;;
}

const Eps = 0.00001
const Maxiter = 20

const sqrt = {x : flt64
	var val
	var iter
	var i;

	val = 1.0;
	for i = 0; i < Maxiter; i++
		iter = 0.5*(val + x/val)
		if abs(val - iter) < Eps
			-> val;
		;;
		val = iter;
	;;
	-> val
}

const main = {
	var r

	r = (sqrt(20.0) : int)
	std.exit(r)
}