[comp.sys.amiga] CPR and math libraries

rlcarr@athena.mit.edu (Rich Carreiro) (03/09/89)

[followups to .tech]

I discovered this problem today.  I have also sent this to a BBS [hence the
line numbers] and am too lazy to strip out the line numbers.

 1: When using CPR on the following code, I get an interesting
 2: inconsistency.  I compiled it with:
 3: lc -v -d2 -Lvma tst.c   or
 4: lc -v -d2 -ff -Lvfa tst.c
 5:  
 6: The code is:
 7: /*** tst.c ***/
 8: #include <stdlib.h>
 9: #include <stdio.h>
10: #include <math.h>
11:  
12: void main()
13: {
14: int a,b;
15: float f;
16: double d;
17:  
18: f = (float)3.3;
19: d = 3.3;
20:  
21: a=sizeof(f);
22: b=sizeof(d);
23: }
24:  
25: When I compile and link against lcm.lib, CPR says f is a float, and d is
26: a double.  Also, CPR says a is 4 and d is 8.  WHen I say that CPR says f
27: is a float and d is a double, I mean that when I do 'wha f', I get:
28: auto at xxxxxxx (4 bytes)
29: float
30:  
31: and when I do 'wha d' I get:
32: auto at xxxxxxx (8 bytes)
33: double
34: 
35: That all is nice and logical.  However, when I compile with
36: lc -v -d2 -ff -Lvfa tst.c, the following happens:
37: A 'wha f' gives:
38: auto at xxxxxxx (8 bytes)
39: double
40:  
41: and a 'wha d' gives:
42: auto at xxxxxxx (8 bytes)
43: double
44:  
45: Meanwhile, 'd a' says a=4 and 'd b' says b=4.  Who's confused, hte
46: compiler or CPR.  I discovered this problem when trying to use
47: scanf() with lcmffp.lib.  I had something like
48:  
49: float f;
50: scanf("%f",&f);
51: and when I looked at f after the scanf(), it was wrong.
52: I tried using %hf and %lf as well, to no avail.
53:  
54: Can anyone out there explain this, and can someone give me a definitive
55: answer on when to use %f, %lf, and %hf and with which floating point
56: libs.
57:  
58: Thank you,
59:  Rich

ARPA:    rlcarr@athena.mit.edu
UUCP:    ...!mit-eddie!mit-athena!rlcarr
BITNET:  rlcarr%athena.mit.edu@MITVMA.mit.edu

*******************************************************************************
* Rich Carreiro                 "Back off man, I'm a scientist."              *
* rlcarr@athena.mit.edu                - Dr. Peter Venkman                    *
*******************************************************************************