Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / test / data / dromaeo / tests / sunspider-math-cordic.html
blobc71964efe6552709d695b0aea692952db4ec35d6
1 <html>
2 <head>
3 <script src="../htmlrunner.js"></script>
4 <script>
5 /*
6 * Copyright (C) Rich Moore. All rights reserved.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
25 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 /////. Start CORDIC
32 var AG_CONST = 0.6072529350;
34 function FIXED(X)
36 return X * 65536.0;
39 function FLOAT(X)
41 return X / 65536.0;
44 function DEG2RAD(X)
46 return 0.017453 * (X);
49 var Angles = [
50 FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),
51 FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),
52 FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),
53 FIXED(0.027977)
57 function cordicsincos() {
58 var X;
59 var Y;
60 var TargetAngle;
61 var CurrAngle;
62 var Step;
64 X = FIXED(AG_CONST); /* AG_CONST * cos(0) */
65 Y = 0; /* AG_CONST * sin(0) */
67 TargetAngle = FIXED(28.027);
68 CurrAngle = 0;
69 for (Step = 0; Step < 12; Step++) {
70 var NewX;
71 if (TargetAngle > CurrAngle) {
72 NewX = X - (Y >> Step);
73 Y = (X >> Step) + Y;
74 X = NewX;
75 CurrAngle += Angles[Step];
76 } else {
77 NewX = X + (Y >> Step);
78 Y = -(X >> Step) + Y;
79 X = NewX;
80 CurrAngle -= Angles[Step];
85 ///// End CORDIC
87 function cordic( runs ) {
88 for ( var i = 0 ; i < runs ; i++ ) {
89 cordicsincos();
93 window.onload = function(){ startTest("sunspider-math-cordic", '211c9ee6');
95 test("Cordic", function(){
96 cordic(2500);
97 });
99 endTest(); };
100 </script>
101 </head>
102 <body></body>
103 </html>