PageRenderTime 16ms CodeModel.GetById 2ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 0ms

/build/pgo/js-input/math-cordic.html

http://github.com/zpao/v8monkey
HTML | 145 lines | 94 code | 27 blank | 24 comment | 0 complexity | 6116fa5447a53c8ae612fe54a8fc0fe9 MD5 | raw file
  1<!DOCTYPE html>
  2<head>
  3<!--
  4 Copyright (C) 2007 Apple Inc.  All rights reserved.
  5
  6 Redistribution and use in source and binary forms, with or without
  7 modification, are permitted provided that the following conditions
  8 are met:
  9 1. Redistributions of source code must retain the above copyright
 10    notice, this list of conditions and the following disclaimer.
 11 2. Redistributions in binary form must reproduce the above copyright
 12    notice, this list of conditions and the following disclaimer in the
 13    documentation and/or other materials provided with the distribution.
 14
 15 THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
 16 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 17 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 18 PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
 19 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 20 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 21 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 22 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 23 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 25 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 26-->
 27
 28<title>SunSpider math-cordic</title>
 29
 30</head>
 31
 32<body>
 33<h3>math-cordic</h3>
 34<div id="console">
 35</div>
 36
 37<script>
 38
 39var _sunSpiderStartDate = new Date();
 40
 41/*
 42 * Copyright (C) Rich Moore.  All rights reserved.
 43 *
 44 * Redistribution and use in source and binary forms, with or without
 45 * modification, are permitted provided that the following conditions
 46 * are met:
 47 * 1. Redistributions of source code must retain the above copyright
 48 *    notice, this list of conditions and the following disclaimer.
 49 * 2. Redistributions in binary form must reproduce the above copyright
 50 *    notice, this list of conditions and the following disclaimer in the
 51 *    documentation and/or other materials provided with the distribution.
 52 *
 53 * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY
 54 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 55 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 56 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
 57 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 58 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 59 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 60 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 61 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 62 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 63 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 64 */
 65
 66/////. Start CORDIC
 67
 68var AG_CONST = 0.6072529350;
 69
 70function FIXED(X)
 71{
 72  return X * 65536.0;
 73}
 74
 75function FLOAT(X)
 76{
 77  return X / 65536.0;
 78}
 79
 80function DEG2RAD(X)
 81{
 82  return 0.017453 * (X);
 83}
 84
 85var Angles = [
 86  FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),
 87  FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),
 88  FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),
 89  FIXED(0.027977) 
 90              ];
 91
 92
 93function cordicsincos() {
 94    var X;
 95    var Y;
 96    var TargetAngle;
 97    var CurrAngle;
 98    var Step;
 99 
100    X = FIXED(AG_CONST);         /* AG_CONST * cos(0) */
101    Y = 0;                       /* AG_CONST * sin(0) */
102
103    TargetAngle = FIXED(28.027);
104    CurrAngle = 0;
105    for (Step = 0; Step < 12; Step++) {
106        var NewX;
107        if (TargetAngle > CurrAngle) {
108            NewX = X - (Y >> Step);
109            Y = (X >> Step) + Y;
110            X = NewX;
111            CurrAngle += Angles[Step];
112        } else {
113            NewX = X + (Y >> Step);
114            Y = -(X >> Step) + Y;
115            X = NewX;
116            CurrAngle -= Angles[Step];
117        }
118    }
119}
120
121///// End CORDIC
122
123function cordic( runs ) {
124  var start = new Date();
125
126  for ( var i = 0 ; i < runs ; i++ ) {
127      cordicsincos();
128  }
129
130  var end = new Date();
131
132  return end.getTime() - start.getTime();
133}
134
135cordic(25000);
136
137
138var _sunSpiderInterval = new Date() - _sunSpiderStartDate;
139
140document.getElementById("console").innerHTML = _sunSpiderInterval;
141</script>
142
143
144</body>
145</html>