Paste: Scala - Without Trig

Author: Justin Sher java Mon, 31 Aug 2009 00:18:46
Plain Text |
```package bench.factor

object Silly {

case class Point(x: Float,y:Float, z:Float);

object Point {

def pointNorm(p:Point) : Double = {
Math.sqrt(p.x * p.x + p.y * p.y + p.z * p.z)
}

def normalizePoint(p: Point) : Point = {
val norm= pointNorm(p).asInstanceOf[Float]
Point(p.x/norm,p.y/norm,p.z/norm);
}

def maxPoint(q:Point, p: Point) : Point= {
Point(Math.max(q.x,p.x),Math.max(q.y,p.y),Math.max(q.z,p.z))
}

def  toString(p: Point) = {
p.x+", "+p.y+", "+p.z;
}

//def create(n : Int)  = {
//		 val s=Math.sin(n);
//		 Point(Math.sin(n).asInstanceOf[Float],Math.cos(n).asInstanceOf[Float]*3.0f,(s * s).asInstanceOf[Float] / 2)
// }

def create(n:Int) = {
Point(n+1,n+2,(n+3)*(n+3)/2);
}
}

def benchmark(len :Int)  = {
val max=maxPoint(new Point(0,0,0),(for (i <- 0 to len-1) yield Point.create(i)) map ( a => { Point.normalizePoint(a) } ))
System.out.println(max)
}

def maxPoint(max: Point ,points: Seq[Point]) : Point ={
if (points.isEmpty) { return max; }
maxPoint(Point.maxPoint(max,points.first),points.drop(1));
}

def main(args: Array[String]): Unit =
{
for(i <- 0 to 8 )
{
System.out.println("Run #" + i)
val start = System.currentTimeMillis()
benchmark(5000000)
val end = System.currentTimeMillis()
System.out.println("Time: " + (end - start));
}
}
}```