tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

math-cordic.html (4299B)


      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 
     39 var _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 
     68 var AG_CONST = 0.6072529350;
     69 
     70 function FIXED(X)
     71 {
     72  return X * 65536.0;
     73 }
     74 
     75 function FLOAT(X)
     76 {
     77  return X / 65536.0;
     78 }
     79 
     80 function DEG2RAD(X)
     81 {
     82  return 0.017453 * (X);
     83 }
     84 
     85 var 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 
     93 function 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 
    123 function 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 
    135 cordic(25000);
    136 
    137 
    138 var _sunSpiderInterval = new Date() - _sunSpiderStartDate;
    139 
    140 document.getElementById("console").innerHTML = _sunSpiderInterval;
    141 </script>
    142 
    143 
    144 </body>
    145 </html>