File: changes

package info (click to toggle)
squeak-vm 1%3A4.0.3.2202-2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 15,200 kB
  • ctags: 15,841
  • sloc: ansic: 73,040; cs: 11,191; sh: 10,238; objc: 5,494; asm: 1,533; makefile: 476; pascal: 372; awk: 206; xml: 32
file content (77 lines) | stat: -rw-r--r-- 1,994 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
21 Oct 2002
bug fix in e_pow.c from "David G Hough at validlab.com" <validlab@validlab.com>.
credit for bug report goes to andrew_johnson@uk.ibm.com
test example:
-----------------------------
static int fail=0;

trypow(x,y,z)
double x,y,z;
{
extern double pow();
double p ;

p = pow(x,y);
if (p != z) {
        printf(" pow failure x %e y %e computed %e correct %e \n",x,y,p,z);
        fail++;
        return;
}
if (1/p != 1/z) {
        printf(" pow failure x %e y %e computed %e correct %e \n",x,y,p,z);
        fail++;
        return;
}
}

main()
{

trypow( 1.0000000001, 1.0000000001E10, 2.7182820535066154);
trypow(-1.0000000001, 1.0000000001E10, -2.7182820535066154);
trypow(-0.001, 1.0000000001E10, -0.0);
trypow(-1000.0, 1.0000000001E10, -1.0/0.0);

if (fail == 0) {
        printf(" fdlibm e_pow.c seems to be current \n");
        exit(0);
}
else {
        printf(" fdlibm e_pow.c seems to be out of date \n");
        exit(1);
}

}
-----------------------------



What's new in FDLIBM 5.3?

CONFIGURE
        To build FDLIBM, edit the supplied Makefile or create
        a local Makefile by running "sh configure"
        using the supplied configure script contributed by Nelson Beebe

BUGS FIXED

    1. e_pow.c incorrect results when
        x is very close to -1.0 and y is very large, e.g.
        pow(-1.0000000000000002e+00,4.5035996273704970e+15) = 0
        pow(-9.9999999999999978e-01,4.5035996273704970e+15) = 0
        Correct results are close to -e and -1/e.

    2. k_tan.c error was > 1 ulp target for FDLIBM
        5.2: Worst error at least 1.45 ulp at
        tan(1.7765241907548024E+269) = 1.7733884462610958E+16
        5.3: Worst error 0.96 ulp

NOT FIXED YET

    3. Compiler failure on non-standard code
        Statements like
                    *(1+(int*)&t1) = 0;
        are not standard C and cause some optimizing compilers (e.g. GCC)
        to generate bad code under optimization.    These cases
        are to be addressed in the next release.