Perl - 7472 bytes
$~=<>=~$"+$'*2;$_=1-$_*$`/$~--/$~*$`for($,,$;)x$';printf'%.8fx$';printf'%f
'x2%f',$`*$,,$;
Or, counting command line options as 1 byte each, in 7270 bytes:
#!perl -n
$-=/ /+$'*2;$_=1-$_*$`/$---/$-*$`for($,,$;)x$';printf'%.8fx$';printf'%f
'x2%f',$`*$,,$;
Or, if you'll allow me Perl 5.8, in 6563 bytes:
#!perl -p
$.+=$'<</ /;$_=1-$_*$`/$.--/$.*$`for($_=$#='%.8f$_=$#='%f
',$\)x$';$_*=$`
but why would you.
Edit: Compliance with the new rules. %f
rounds to 6 places by default, how convenient!
<> =~ m/ /; # read one line from stdin, match a space
# prematch ($`) is now x, postmatch ($') is now n
($x, $n) = ($`, $'); # reassign, for clarity
$i = 2*$n + 1; # counting variable (denominators)
for (($s, $c)x$n) { # iterate over $s and $c, n times each
# compute the next term of the recursive expression
# note: inside this loop $_ is not the _value_
# of $s and $c alternately, it _is_ $s and $c
$_ = 1 - $_ * $x**2 / $i-- / $i;
}
# formated output
printf("%.8f\n%.8f""%f\n%f", $x*$s, $c);
$ echo 5 3 | perl sin-cos.pl
10.20833333208333
14.54166667541667
$ echo 98.26555 5013 | perl sin-cos.pl
0.16403330765431
-0.98645480641092
$ echo 9.26 10 | perl sin-cos.pl
-3.154677
-8.404354
$ echo 6.54 12 | perl sin-cos.pl
0.25398611253986
0.96714730967147
$ echo 5 1 | perl sin-cos.pl
5.00000000000000
1.00000000000000
$ echo 20 20 | perl sin-cos.pl
-5364.411846
-10898.499385