1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*
2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2007 Apple Inc.  All rights reserved.
3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without
5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions
6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met:
7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1. Redistributions of source code must retain the above copyright
8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    notice, this list of conditions and the following disclaimer.
9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2. Redistributions in binary form must reproduce the above copyright
10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    notice, this list of conditions and the following disclaimer in the
11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    documentation and/or other materials provided with the distribution.
12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */
25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvar loops = 15
27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvar nx = 120
28563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvar nz = 120
29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkfunction morph(a, f) {
31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    var PI2nx = Math.PI * 8/nx
32563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    var sin = Math.sin
33563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    var f30 = -(50 * sin(f*Math.PI*2))
34563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
35563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    for (var i = 0; i < nz; ++i) {
36563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark        for (var j = 0; j < nx; ++j) {
37563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark            a[3*(i*nx+j)+1]    = sin((j-1) * PI2nx ) * -f30
38563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark        }
39563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    }
40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
42563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
43563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvar a = Array()
44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkfor (var i=0; i < nx*nz*3; ++i)
45563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    a[i] = 0
46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkfor (var i = 0; i < loops; ++i) {
48563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    morph(a, i/loops)
49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
50563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
51563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarktestOutput = 0;
52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkfor (var i = 0; i < nx; i++)
53563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    testOutput += a[3*(i*nx+i)+1];
54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarka = null;
55