CS3343
 Analysis of Algorithms 
  Sin Function   
Using a Series


Series Definition of Sin Function: The following is the Taylor Series for the Sin function:

Next is a simple program implementing this series. In each case except for inputs 10, 20, and 30 we used enough terms to get 15-digit accuracy.

Sin Function using Taylor Series
// sine.c: Using Taylor series for sin
#include <stdio.h>
#include <math.h>
double sine(double x, int n);

int main() {
   double x = 2.0/3.0;
   scanf("%lf", &x);
   printf("Input x:  %20.16f\n", x);
   printf("sine(x):  %20.16f\n",
      sine(x, 59));
   printf("sin (x):  %20.16f\n", sin(x));
}

double sine(double x, int n) {
   double term = x;
   double xsq = x*x;
   double sum = x;
   double sign = 1.0;
   int i;
   for (i = 3; i <= n; i = i + 2) {
      term = term * xsq * (1.0/(i*(i-1)));
      sign = sign * (-1.0);
      sum = sum + sign * term;
      printf("i:%2i, Sum:%20.16f\n",
         i, sum);
   }
   return sum;
}

3.1415926535897932 = π Input x: 3.1415926535897931 i: 3, Sum: -2.0261201264601763 i: 5, Sum: 0.5240439134171688 i: 7, Sum: -0.0752206159036232 i: 9, Sum: 0.0069252707075051 i:11, Sum: -0.0004451602382093 i:13, Sum: 0.0000211425675583 i:15, Sum: -0.0000007727858895 i:17, Sum: 0.0000000224195106 i:19, Sum: -0.0000000005289184 i:21, Sum: 0.0000000000103481 i:23, Sum: -0.0000000000001704 i:25, Sum: 0.0000000000000027 i:27, Sum: 0.0000000000000002 i:29, Sum: 0.0000000000000002 sine(x): 0.0000000000000002 sin (x): 0.0000000000000001
1.5707963267948966 = π/2 Input x: 1.5707963267948966 i: 3, Sum: 0.9248322292886504 i: 5, Sum: 1.0045248555348174 i: 7, Sum: 0.9998431013994987 i: 9, Sum: 1.0000035425842861 i:11, Sum: 0.9999999437410509 i:13, Sum: 1.0000000006627803 i:15, Sum: 0.9999999999939768 i:17, Sum: 1.0000000000000437 i:19, Sum: 1.0000000000000000 sine(x): 1.0000000000000000 sin (x): 1.0000000000000000
0.7853981633974483 = π/4 Input x: 0.7853981633974483 i: 3, Sum: 0.7046526512091675 i: 5, Sum: 0.7071430457793603 i: 7, Sum: 0.7071064695751781 i: 9, Sum: 0.7071067829368671 i:11, Sum: 0.7071067811796194 i:13, Sum: 0.7071067811865679 i:15, Sum: 0.7071067811865475 sine(x): 0.7071067811865475 sin (x): 0.7071067811865475 = √2/2
20 Input x: 20.0000000000000000 i: 3, Sum: -1313.3333333333332575 i: 5, Sum: 25353.3333333333321207 i: 7, Sum: -228614.9206349205924198 i: 9, Sum: 1182319.8236331567168236 i:11, Sum: -3948351.9737053066492081 i:13, Sum: 9207216.7374189589172602 i:15, Sum:-15851009.3790082130581141 i:17, Sum: 20999323.1451493948698044 i:19, Sum:-22100480.9766723662614822 i:21, Sum; 18946951.5203007385134697 i:23, Sum:-13501611.7184131778776646 i:25, Sum: 8130763.7740627676248550 i:27, Sum: -4195376.1076899077743292 i:29, Sum: 1876613.9818434296175838 i:31, Sum: -734994.6588160702958703 i:33, Sum: 254251.0384034372400492 i:35, Sum: -78268.5236871535307728 i:37, Sum: 21587.2006643752247328 i:39, Sum: -5364.4118461588514037 i:41, Sum: 1209.1521808006791616 i:43, Sum: -246.7866956023176499 i:45, Sum: 47.3423703376817002 i:47, Sum: -7.0755882081091173 i:49, Sum: 2.1791666466172117 i:51, Sum: 0.7274403948954347 i:53, Sum: 0.9381408668434430 i:55, Sum: 0.9097636989043173 i:57, Sum: 0.9133197349869145 i:59, Sum: 0.9129040674144310 i:61, Sum: 0.9129494955644292 i:63, Sum: 0.9129448434241324 i:65, Sum: 0.9129452907453148 i:67, Sum: 0.9129452502820691 i:69, Sum: 0.9129452537316212 i:71, Sum: 0.9129452534539912 i:73, Sum: 0.9129452534751199 i:75, Sum: 0.9129452534735971 i:77, Sum: 0.9129452534737013 i:79, Sum: 0.9129452534736945 i:81, Sum: 0.9129452534736949 i:83, Sum: 0.9129452534736949 sine(x): 0.9129452534736949 sin (x): 0.9129452507276277
% cc -o sine sine.c -lm -Wall
./sine
1
Input x:    1.0000000000000000
i: 3, Sum:  0.8333333333333334
i: 5, Sum:  0.8416666666666667
i: 7, Sum:  0.8414682539682540
i: 9, Sum:  0.8414710097001764
i:11, Sum:  0.8414709846480680
i:13, Sum:  0.8414709848086585
i:15, Sum:  0.8414709848078937
i:17, Sum:  0.8414709848078965
i:19, Sum:  0.8414709848078965
sine(x):    0.8414709848078965
sin (x):    0.8414709848078965

5 Input x: 5.0000000000000000 i: 3, Sum:-15.8333333333333321 i: 5, Sum: 10.2083333333333321 i: 7, Sum: -5.2926587301587293 i: 9, Sum: 0.0896301807760143 i:11, Sum: -1.1336172989818820 i:13, Sum: -0.9375840490206807 i:15, Sum: -0.9609213406827285 i:17, Sum: -0.9587763690226138 i:19, Sum: -0.9589331651965988 i:21, Sum: -0.9589238320910044 i:23, Sum: -0.9589242932128224 i:25, Sum: -0.9589242739994133 i:27, Sum: -0.9589242746836515 i:29, Sum: -0.9589242746625850 i:31, Sum: -0.9589242746631513 i:33, Sum: -0.9589242746631379 i:35, Sum: -0.9589242746631382 i:37, Sum: -0.9589242746631382 sine(x): -0.9589242746631382 sin (x): -0.9589242746631385
10 Input x: 10.0000000000000000 i: 3, Sum: -156.6666666666666572 i: 5, Sum: 676.6666666666666288 i: 7, Sum:-1307.4603174603171283 i: 9, Sum: 1448.2716049382715937 i:11, Sum:-1056.9392336058999717 i:13, Sum: 548.9651500762613523 i:15, Sum: -215.7512231057202143 i:17, Sum: 65.3945023288318339 i:19, Sum: -16.8118501374114544 i:21, Sum: 2.7610909259798042 i:23, Sum: -1.1070792446508793 i:25, Sum: -0.4623842162124320 i:27, Sum: -0.5542211148503874 i:29, Sum: -0.5429111519639397 i:31, Sum: -0.5441272770054932 i:33, Sum: -0.5440121136492855 i:35, Sum: -0.5440217912422441 i:37, Sum: -0.5440210646962262 i:39, Sum: -0.5440211137209238 i:41, Sum: -0.5440211107316130 i:43, Sum: -0.5440211108971340 i:45, Sum: -0.5440211108887744 i:47, Sum: -0.5440211108891611 i:49, Sum: -0.5440211108891446 i:51, Sum: -0.5440211108891453 i:53, Sum: -0.5440211108891453 sine(x): -0.5440211108891453 sin (x): -0.5440211108893698
30 Input x: 30.0000000000000000 i: 3, Sum: -4470.0000000000000000 i: 5, Sum: 198030.0000000000000000 i: 7, Sum: -4141255.7142857145518064 i: 9, Sum: 50099815.7142857164144516 i:11, Sum: -393690768.7012987136840820 i:13, Sum: 2166639526.0039963722229004 i:15, Sum: -8806204594.1615543365478516 i:17, Sum: 27501000215.2097549438476562 i:19, Sum: -68044275598.9252700805664062 i:21, Sum: 136695601145.6497802734375000 i:23, Sum:-227466234961.3018798828125000 i:25, Sum: 318776519199.1256103515625000 i:27, Sum:-381534704083.4737548828125000 i:29, Sum: 394672316796.2546386718750000 i:31, Sum:-356495767926.0631103515625000 i:33, Sum: 283704304280.4576416015625000 i:35, Sum:-200480624279.0958862304687500 i:37, Sum: 126671354477.3591918945312500 i:39, Sum: -72003936265.4273071289062500 i:41, Sum: 37025186703.1750335693359375 i:43, Sum: -17308263281.1782913208007812 i:45, Sum: 7388759438.9823112487792969 i:47, Sum: -2892147336.2926845550537109 i:49, Sum: 1041873113.4298901557922363 i:51, Sum: -346604692.3545479774475098 i:53, Sum: 106816942.3355805873870850 i:55, Sum: -30583553.0250644385814667 i:57, Sum: 8157188.1480497568845749 i:59, Sum: -2031785.2756214216351509 i:61, Sum: 473699.9924944420345128 i:63, Sum: -103600.7605276464018971 i:65, Sum: 21296.0370011708146194 i:67, Sum: -4123.9353588326885074 i:69, Sum: 752.0184186615897488 i:71, Sum: -130.9510782689636699 i:73, Sum: 20.2423287396927378 i:75, Sum: -4.2755210454947878 i:77, Sum: -0.5048332794885040 i:79, Sum: -1.0555666435595290 i:81, Sum: -0.9790758985496645 i:83, Sum: -0.9891907487566698 i:85, Sum: -0.9879157676381397 i:87, Sum: -0.9880691334503126 i:89, Sum: -0.9880515096976369 i:91, Sum: -0.9880534463737551 i:93, Sum: -0.9880532426560709 i:95, Sum: -0.9880532631875284 i:97, Sum: -0.9880532612031736 i:99, Sum: -0.9880532613872510 i:101, Sum: -0.9880532613708480 i:103, Sum: -0.9880532613722532 i:105, Sum: -0.9880532613721374 i:107, Sum: -0.9880532613721467 i:109, Sum: -0.9880532613721460 i:111, Sum: -0.9880532613721460 sin (x): -0.9880316240928618


Revision date: 2012-10-07. (Please use ISO 8601, the International Standard Date and Time Notation.)