Вот
программа на Фортране:
PROGRAM test
REAL, PARAMETER :: R1=2, R2=2.3, R3=2.6, R4=2.9, R5=3.2, R6=3.5, R7=3.8
REAL :: x1 = 0.1, x2 = 0.1, x3 = 0.1, x4 = 0.1, x5 = 0.1, x6 = 0.1, x7 = 0.1
INTEGER :: i
DO i=1, 10000000
x1 = R1*x1*(1-x1)
x2 = R2*x2*(1-x2)
x3 = R3*x3*(1-x3)
x4 = R4*x4*(1-x4)
x5 = R5*x5*(1-x5)
x6 = R6*x6*(1-x6)
x7 = R7*x7*(1-x7)
END DO
WRITE(*,*) x1, x2, x3, x4, x5, x6, x7
END PROGRAM test
А вот
программа на C:
int main()
{
double x1 = 0.1, x2 = 0.1, x3 = 0.1, x4 = 0.1, x5 = 0.1, x6 = 0.1, x7 = 0.1 ;
double r1 = 2, r2 = 2.3, r3 = 2.6, r4 = 2.9, r5 = 3.2, r6 = 3.5, r7 = 3.8;
int i;
for (i=1; i<=10000000; i++) {
x1 = r1*x1*(1-x1);
x2 = r2*x2*(1-x2);
x3 = r3*x3*(1-x3);
x4 = r4*x4*(1-x4);
x5 = r5*x5*(1-x5);
x6 = r6*x6*(1-x6);
x7 = r7*x7*(1-x7);
}
printf("%f\t%f\t%f\t%f\t%f\t%f\t%f\n", x1, x2, x3, x4, x5, x6, x7);
return 0;
}
А вот результаты их работы:
alexey@pippurini:/tmp$ gfortran test1f.f90 -o test1f
alexey@pippurini:/tmp$ ./test1f
0.5000000 0.5652174 0.6153846 0.6551723 0.5130445 0.8269408 0.7763757
alexey@pippurini:/tmp$ gcc test1.c -o test1
alexey@pippurini:/tmp$ ./test1
0.500000 0.565217 0.615385 0.655172 0.513045 0.826941 0.186553
Предлагается объяснить, что происходит. Я думаю, что знаю.
Комменты скринятся.
программа на Фортране:
REAL, PARAMETER :: R1=2, R2=2.3, R3=2.6, R4=2.9, R5=3.2, R6=3.5, R7=3.8
REAL :: x1 = 0.1, x2 = 0.1, x3 = 0.1, x4 = 0.1, x5 = 0.1, x6 = 0.1, x7 = 0.1
INTEGER :: i
DO i=1, 10000000
x1 = R1*x1*(1-x1)
x2 = R2*x2*(1-x2)
x3 = R3*x3*(1-x3)
x4 = R4*x4*(1-x4)
x5 = R5*x5*(1-x5)
x6 = R6*x6*(1-x6)
x7 = R7*x7*(1-x7)
END DO
WRITE(*,*) x1, x2, x3, x4, x5, x6, x7
END PROGRAM test
А вот
программа на C:
int main()
{
double x1 = 0.1, x2 = 0.1, x3 = 0.1, x4 = 0.1, x5 = 0.1, x6 = 0.1, x7 = 0.1 ;
double r1 = 2, r2 = 2.3, r3 = 2.6, r4 = 2.9, r5 = 3.2, r6 = 3.5, r7 = 3.8;
int i;
for (i=1; i<=10000000; i++) {
x1 = r1*x1*(1-x1);
x2 = r2*x2*(1-x2);
x3 = r3*x3*(1-x3);
x4 = r4*x4*(1-x4);
x5 = r5*x5*(1-x5);
x6 = r6*x6*(1-x6);
x7 = r7*x7*(1-x7);
}
printf("%f\t%f\t%f\t%f\t%f\t%f\t%f\n", x1, x2, x3, x4, x5, x6, x7);
return 0;
}
А вот результаты их работы:
alexey@pippurini:/tmp$ gfortran test1f.f90 -o test1f
alexey@pippurini:/tmp$ ./test1f
0.5000000 0.5652174 0.6153846 0.6551723 0.5130445 0.8269408 0.7763757
alexey@pippurini:/tmp$ gcc test1.c -o test1
alexey@pippurini:/tmp$ ./test1
0.500000 0.565217 0.615385 0.655172 0.513045 0.826941 0.186553
Предлагается объяснить, что происходит. Я думаю, что знаю.
Комменты скринятся.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
There are three real floating types, designated as float, double, and long
double. The set of values of the type float is a subset of the set of values of the
type double; the set of values of the type double is a subset of the set of values of the
type long double.
no subject
long double: 0.299181
Overflow bug?
no subject