// 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
|