Det är inte alla datortillverkare som har bra rutiner för de elementära funktionerna. Om man kör följande program på en HP 9000/700:

#include <math.h>
#include <stdio.h>
main()
{
  double  x = 1.0e16, s, c;
  int     k;

  printf("    x           sin(x)           cos(x)       1-sin^2-cos^2\n");
  for (k = 0; k < 30; k++) {
    s = sin(x);
    c = cos(x);
    if (!(k % 10)) printf("\n");
    printf("%8.2e  %15.5e  %15.5e  %15.5e\n",
           x, s, c, 1.0 - s * s - c * c);
    x += 1.0e16;
  }
}

får man följande resultat:

    x           sin(x)           cos(x)       1-sin^2-cos^2

1.00e+16      2.20685e-01     -9.75345e-01      2.85461e-10
2.00e+16     -4.30488e-01      9.02596e-01      6.99467e-08
3.00e+16     -6.18296e-01      7.85944e-01      1.59595e-06
4.00e+16     -7.77112e-01      6.29351e-01      1.36597e-05
5.00e+16      6.14212e+00     -8.36956e+00     -1.06775e+02
6.00e+16     -9.71858e-01      2.35177e-01      1.84172e-04
7.00e+16      1.13457e+01     -1.55975e+01     -3.71007e+02
8.00e+16     -9.77689e-01     -2.10224e-01     -6.93227e-05
9.00e+16      2.07342e+01     -2.77889e+01     -1.20113e+03
1.00e+17      1.54832e+03     -1.17871e+03     -3.78664e+06

1.10e+17      2.12597e+04     -1.08960e+04     -5.70697e+08
1.20e+17     -4.40000e-01     -9.47750e-01     -9.18298e-02
1.30e+17      6.44633e+01     -7.74031e+01     -1.01458e+04
1.40e+17      2.95893e+03     -2.04164e+03     -1.29235e+07
1.50e+17      6.21800e-01      7.83175e-01      1.67902e-06
1.60e+17      6.32840e-01     -1.47172e+00     -1.56645e+00
1.70e+17      1.74739e+02     -1.83925e+02     -6.43609e+04
1.80e+17      5.30989e+03     -3.35311e+03     -3.94382e+07
2.00e+17      2.67293e+05     -9.41803e+04     -8.03153e+10

2.10e+17      1.02974e+06     -2.97957e+05     -1.14914e+12
2.20e+17      3.16555e+06     -7.78173e+05     -1.06262e+13
2.30e+17     -8.95289e-01      4.45417e-01      6.22349e-05
2.40e+17      8.33570e+00     -1.14616e+01     -1.99851e+02
2.50e+17      4.14415e+07     -7.02923e+06     -1.76681e+15
2.60e+17      1.49983e+04     -8.09936e+03     -2.90548e+08
2.70e+17      1.06810e+05     -4.30706e+04     -1.32634e+10
2.80e+17      4.88305e+05     -1.57530e+05     -2.63258e+11
2.90e+17      0.00000e+00      1.00000e+00      0.00000e+00
3.00e+17      0.00000e+00      1.00000e+00      0.00000e+00

Man tycker att även om det är svårt att beräkna sin och cos för stora vinklar så borde man åtminstone kunna få resultat som ligger i [-1, 1]. Man kan på denna HP-dator inte ens lita på att elementära trigonometriska identiteter är approximativt uppfyllda (sin^2+cos^2 är ju inte ens i närheten av ett).  

 

Back