Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/benchmarks/todo/bh/bhmath.sml
ViewVC logotype

Annotation of /sml/trunk/benchmarks/todo/bh/bhmath.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 193 - (view) (download)

1 : monnier 193 structure bhMath =
2 :     struct
3 :     type 'a vec = 'a list
4 :    
5 :     fun getx [x,_,_] = x
6 :     fun gety [_,y,_] = y
7 :     fun getz [_,_,z] = z
8 :    
9 :     fun mkvs s = [s,s,s]
10 :    
11 :     fun arithv _ [] [] = []
12 :     | arithv (f:(real * real)->real) (u::us) (v::vs) =
13 :     (f (u,v)) :: arithv f us vs
14 :    
15 :     val subv = arithv (op -)
16 :     val addv = arithv (op +)
17 :     val mulv = arithv (op * )
18 :     val divv = arithv (op /)
19 :    
20 :     fun dotvp v u = fold (op +) (mulv v u) 0.0
21 :    
22 :     fun arithvs _ [] _ = []
23 :     | arithvs (f:(real * real)->real) (v::vs) s =
24 :     (f (v,s))::arithvs f vs s
25 :    
26 :     val subvs = arithvs (op -)
27 :     val addvs = arithvs (op +)
28 :     val mulvs = arithvs (op * )
29 :     val divvs = arithvs (op /)
30 :    
31 :     fun even x = (2 * (x div 2)) = x
32 :     fun odd x = not (even x)
33 :    
34 :     fun pow 0.0 _ = 0.0
35 :     | pow x y = exp (y * ln x)
36 :    
37 :     val rand = Random.mkRandom 0
38 :    
39 :     fun xrand (l:real,h:real) =
40 :     let val expand = 100000
41 :     val r = (real (rand expand)) / (real (expand+1))
42 :     in
43 :     l + (h - l)*r
44 :     end
45 :    
46 :     fun randvec 0 _ = []
47 :     | randvec n r = (xrand r) :: randvec (n-1) r
48 :    
49 :     val randvec = randvec 3
50 :     val realzerovec = mkvs 0.0
51 :     val intzerovec = mkvs 0
52 :    
53 :     fun mapvec f [] = []
54 :     | mapvec f (v::vs) = (f v)::mapvec f vs
55 :    
56 :     fun mapvec2 f [] [] = []
57 :     | mapvec2 f (u::us) (v::vs) = (f (u,v))::mapvec2 f us vs
58 :    
59 :     fun mapvec3 f [] [] [] = []
60 :     | mapvec3 f (u::us) (v::vs) (w::ws) = (f (u,v,w))::mapvec3 f us vs ws
61 :    
62 :     fun realprvec [x:real,y:real,z:real] =
63 :     (print "<";
64 :     print x;
65 :     print " ";
66 :     print y;
67 :     print " ";
68 :     print z;
69 :     print ">\n")
70 :    
71 :     val PI = 3.14159265358979323846
72 :     val TWO_PI = 6.28318530717958647693
73 :     val FOUR_PI = 12.56637061435917295385
74 :     val HALF_PI = 1.57079632679489661923
75 :     val FRTHRD_PI = 4.18879020478639098462
76 :     end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0