Note that there are some explanatory texts on larger screens.

plurals
  1. POPossible Code Speed Optimisations?
    primarykey
    data
    text
    <p>Ok so I have a my Trig class that I use to store a static table of values for faster execution of sin, cos, and tan functions in my program. Are there any comments and/or speed improvements that could be made over my current method? Thanks to previous answers, I am already feeling much more competent with C++.</p> <p>Trig.h</p> <pre><code>#pragma once #include &lt;math.h&gt; class Trig { private: struct Table { static const int multiple = 10; // Accurately stores values to 1/10 of a degree double sin[360*multiple]; Table(); }; static const Table table; static void shrinkRange(double*); // Shrinks degrees to range 0-359 for proper array indexing public: static double sin(double); static double cos(double); static double tan(double); }; </code></pre> <p>Trig.cpp</p> <pre><code>#include "Trig.h" Trig::Table::Table() // table constructor { double const PI = 3.14159265358979323; double const degToRad = PI/180.0; double const incr = 1.0/multiple; int index = 0; for (double angle = 0; index != 360*table.multiple; angle += incr) Table::sin[index++] = _INC_MATH::sin(angle*degToRad); } Trig::Table const Trig::table; // initialize static table member void Trig::shrinkRange(double* degrees) { if (*degrees &gt;= 360) *degrees -= 360*( (int)*degrees/360); if (*degrees &lt; 0) *degrees += 360*( -(int)*degrees/360 + 1); } double Trig::sin(double degrees) { shrinkRange(&amp;degrees); degrees *= table.multiple; return Trig::table.sin[(int)(degrees+0.5)]; } double Trig::cos(double degrees) { return Trig::sin(degrees + 90); } double Trig::tan(double degrees) { return Trig::sin(degrees)/Trig::cos(degrees); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload