005
11.07.2009, 09:06 Uhr
holm
|
Hmm, mit dem Compiler wird das Programmieren etwas kompliziert, der ist noch sehr jung...
Quellcode: | #include <stdio.h> #include <math.h>
main() {
double pi; int i;
pi=4*atan(1.0); printf("pi=%f\n",pi);
for(i=0;i<360;i++) printf("Grad: %3d, Sinus: %f\n", i,sin(((double)i * pi) / (double) 180.0)); }
|
und dann ..
Quellcode: | ... Grad: 329, Sinus: -0.515038 Grad: 330, Sinus: cvtdl: integer overflow: Result too large -0.500000 Grad: 331, Sinus: -0.484810 Grad: 332, Sinus: -0.469472 ...
|
Das Selbe bei 210 Grad, auch -0.5 als Ergebnis.
Welcher Integer läuft hier über?
Mal ganz abgesehen davon:
#57 /bin/time ./holm >sinlist 1.76u 33.40s 0:35 100% #58 lcc -O -o lholm holm.c -lm #59 /bin/time ./lholm >lsinlist cvtdl: integer overflow: Result too large cvtdl: integer overflow: Result too large 107.70u 0.50s 1:50 98% #60
(das Erste ist mit dem Systemcompiler übersetzt)
Gruß,
Holm -- float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v; {s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+ (r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&& (A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;} Dieser Beitrag wurde am 11.07.2009 um 09:14 Uhr von holm editiert. |