[prev in list] [next in list] [prev in thread] [next in thread] 

List:       vtk-developers
Subject:    [vtk-developers] float vs double
From:       "Volpe, Christopher R (Research)" <volpecr () crd ! ge ! com>
Date:       2002-08-28 18:07:47
Message-ID: FBE90DFC240BA541B38A43F39913A16D02EA332C () xmb02crdge
[Download RAW message or body]

Hi folks-
  Under MS VC++ there are *lots* of warnings about conversions of doubles to floats. Now, I don't
know what happens on other CPUs (sparc, mips, etc) but on X86 *everything* is computed in double
precision, even if all the arguments have type float [%]. So, I'd like to clean some of this stuff
up, to reduce the number of spurious warnings that hide the real warnings. I see two general
approaches:

1) Make the double-to-float conversions explicit, with a static_cast<float> and/or remove the need
for conversion by using float constants instead of double constants.
E.g.:
	  static float Pi() {return 3.14159265358979;};
becomes
	  static float Pi() {return 3.14159265358979f;}; // note "f" at end of constant
and
	  static float Norm(const float x[3]) {
	    return sqrt(x[0]*x[0] + x[1]*x[1] + x[2]*x[2]);};
becomes
	  static float Norm(const float x[3]) {
	    return static_cast<float> sqrt(x[0]*x[0] + x[1]*x[1] + x[2]*x[2]);};

--- OR ---

2) Change occurrences of "float" to "double" where appropriate.
E.g.:
	  static float Pi() {return 3.14159265358979;};
becomes
	  static double Pi() {return 3.14159265358979;};

I'd prefer (2) because forcing things to be float rather than double incurs extra run-time
conversions (on X86). However, (1) might be a better choice if other architectures actually do
single-precision arithmetic internally, and do it faster than double-precision arithmetic. Ideally,
it might be better to typedef vtkReal on a per-architecture basis depending on which type is fastest
on the given platform, and use that instead, but I know that's too much to ask for. 

Any comments?


[%] The exception is if you explicitly put the processor in single precision mode. And even then, the
only thing this affects is divides and square roots. Everything else is still double precision.
Chris
> GE Global Research Center 
> ___________________________________________________________________________________________________
> _______________________________________________
> 
Dr. Christopher R. Volpe, Ph.D.
Computer Scientist
Visualization and Computer Vision Lab 
Imaging Technologies
Bldg KW, Room C215
P.O. Box 8, Schenectady, NY 12301

(518) 387-7766, Dial Comm: 8*833-7766, Fax: (518) 387-6981
e-mail: volpecr@research.ge.com    web: http://www.crd.ge.com/~volpecr




begin 600 winmail.dat
M>)\^(C(2`0:0"``$```````!``$``0>0!@`(````Y`0```````#H``$(@`<`
M&````$E032Y-:6-R;W-O9G0@36%I;"Y.;W1E`#$(`06``P`.````T@<(`!P`
M#@`'`"\``P!$`0$@@`,`#@```-('"``<``X`!P`N``,`0P$!"8`!`"$````X
M13(Y0S0X1#%!1CA%031!038X-34V,C@P,45",D$T.0!'!P$$@`$`$````&9L
M;V%T('9S(&1O=6)L90"Z!0$-@`0``@````(``@`!`Y`&`'0,```O`````P`)
M60,````"`7$``0```!8````!PDZ]T\2DI#)C4X=.H*UH7R=%IDO)```#`-X_
MKV\```,``6X@`````P`]@`@@!@``````P````````$8`````4H4``'UN`0`>
M`#Z`""`&``````#`````````1@````!4A0```0````0````Y+C``"P#J@0@@
M!@``````P````````$8`````!H4````````#`#^`""`&``````#`````````
M1@`````!A0````````L`.X`((`8``````,````````!&``````.%````````
M"P!`@`@@!@``````P````````$8`````#H4````````#`#R`""`&``````#`
M````````1@`````0A0````````,`08`((`8``````,````````!&`````!&%
M`````````P!"@`@@!@``````P````````$8`````&(4````````"`0D0`0``
M``0'````!P``)PP``$Q:1G6&8R"%`P`*`')C<&<Q,C46,@#X"V!N#A`P,S-/
M`?<"I`/C`@!C:`K`<_!E=#`@!Q,"@P!0!.5Q`@!P<G$.4!#6#C`U?P8`!0,"
M@Q+Q$'42PA%I,[L#QA%X-!2;$,\"DC4#QIL%ZP*`?0J`",@@.PEO]Q.1&],.
M(#@)M!UR"C(=<5\;TQ.1";L"@`J!=@B0=\IK"X!D%T!U8P!0"P,A"[4@2&D@
M`A!L:XQS+0JB"H`@(%4@L`,$D`725D,K*R!TLF@$D&4@"L`D,"H)``!T<RH@
M;V8@=_\*P`,`#R`$(`&@"&`%0`6@?&YV!)``D`(@!"`E`61G"&`"8`>1=&\B
M(`D`804DP"X'L&]W+"!)R2<!;B<%0&MN*%`E(.<84`5`&%!P<`GP)L$#H$,D
ML"0!($-0500@**IS"K%C*'!M!2!S*'!A$3!C*2!B)?$J,5C4.#8D@&4F47DC
M\"5QYR3@!``F$6UP)?`)@"VP^P.@)Q0@$L`%D`0`)I$KT>\F4`.@!I`D0&P#
M("/Q)$'\9W4'@`(P!"`84"90(^"&>2G@)[0@6R5=*"`44V\H<2<N8&QI:]LQ
MH2>@8R=0`Y%S`W`D,$<E`2U1!"!S='4!("#\=7`H<">1"7$@\#&A,*'Z;C$`
M8B-!)0$K(`AQ"&#O!"`E-R/P*8)I`0`P@PEPOP=`)2<H("B0$2`QH7<GH/YG
M"?`$D#DQ*<$#8`#0)``L<SHBE"*4,2P@36'7,V(PH2<4+2>0+3(4)BK,97@+
M4`W@:70H<`/P'R/P)$`TX2?P#>!?8V&U-/`\)\,^)$`@L"\%L?\)<`1@,9(V
M0@G@+F`"$`7`^R8H+#!Y-4``D`\@,@4F(?]`(3$R"X`T\#/@+F`FYT28PBXB
ME$4N9RX[Q@&11R+P0!4R!5!I*"P@7`Y["7`U``2A,RXQ-``Q-3DR-C4S-=`X
M.3<Y&]!]&]`BH_\VH"WQ!Y!'OTC/2=]*XQK`<4M!("\O-F`DL"0P(OQF(B1`
M!4`)\$6C1*8BE(]!44Q/35<H0')M*$2CX3(%>%LS74X24ILB\"E.57-Q`"`H
M54`P7=HJ5W(@(]!50#%7HEA0[5@#,E>B61`I2S]2GU.O_U2_5<]6U$`_5Q]8
M+UD^(I3"+6/0($]2(&/1.]HZ,BP@0QA0#R`T46-C^PAP"7!N-@`FPU"@)])0
MP/TGD2(G%%#`*6`D$SLR$L#_!S`N0$;_"I,+,%L?3<]*3_]9OUK/+J9KSVS?
M.]HS`B\AVF8C02AE,6Y!83=P,?'_!;`O4$01+5,G<S:@,@4ZX+\J<S@Q+I<+
M@&7Q/O)T.N"Y-;!U;CVP!W$F&R@LA+HI*"!(*%`M`BAP*#R1^2N09V@%0'71
M0``VH`)`^R-!&$!O#>!W<240*F0K0?LM8"Y`8W#Q!Y$`T#4`,%'_0\`G$#00
M)7$]D2\G)$$_P>\'@&LB"X!\`6Y^8BAP05'_?J(_<"(@0*%VK']/@%(YX?\!
M`($$@=%[)WO5)Y$QP@$!X"!V=&M2.2)_PB\0_020+7U*+#!`H"W!`0`IX?YD
M1`(J,2E@#>`_X#'#+<'/@@-<P2HQ,))G:2_B"U'_`#!<48%$='(X,T5%*'`L
M0K<HD"D3.#(G)W(GH&T@\'>*42>@0*!K0K(H(#O:0>YN0\`M\3$3/VG:.^DR
M<?P@5#"A/Q`V``4P0W(MP?TP(7D(8#\'?H$N(3"#.T'_9E$T(`7`+H%^Y"\8
M*X`$<?\H()%P+F`OTR/Q+Z$PD@(@]WZ!+5,TE&$!('VA12&)(?^+\#B1):%1
M(6!@?E`D(0-@VR2Q*"!%+1<KX&QT@33#WP,0`R`NOFD5"O1C`$$`H/\2`PY`
M95$%$&ZFH,`.4`PPSSM!?9(49"'11T6BM@+1_C,B\`*QH[`)`(C@"5"D@N^'
M,!$@?4*DLT,Q(020I'17HLFB!A808@%`:0O"-/P@7ZD_JD^K7ZQOK7^NCS^O
MG["OL4>A]P%`H_AS,>8W.]47,"!$D((4<*&4U2>0<"J"4B@@5@;P*>##M#(H
M<%!H+D1I$*?&_PA0+A,%P!/0")`",+4A(I3.5@0`?E&T,FEZ7U%_PN]1(;=W
MN/%#<DQJH7+E`,#KB^!$$50%D&@I(`D`B^`C;I>TP4)L9$0@2U=O*'`(``-P
M*K`R<8`BE%`$+D\H($)O>"`X/RAP$]"9@7VA19"!,4Y9,B`.(#,P(1,\%B@U
M!#$X+"`S.#<M-V@W-C8H<$0',;I";3(ZO]`J.`]@PK5&8<9XP[#"*#8Y.!(1
MON7?M+(]H`#``Q##L':U\@4`_D"T,GWAI>.TLD=P:0`M\=M68GIP8L.PH+-U
M`R![4.AT<#I0('?*@,C`"R#YR)4O?L<5LK/)X"D@.L!?Q<D+Q3OIDJD:\0#/
M8!X`<``!````$````&9L;V%T('9S(&1O=6)L90`+``(``0````,`_3_D!```
M0``Y`("6L="]3L(!`P#Q/PD$```>`#%``0```!(```!#2%))4U1/4$A%4BY6
M3TQ010````,`&D``````'@`P0`$````2````0TA225-43U!(15(N5D],4$4`
M```#`!E```````,`)@```````P`V```````#`(`0_____PL`\A`!`````@%'
M``$````V````8SU54SMA/4U!4DLT,#`[<#U'13ML/5A-0C`R0U)$1T4M,#(P
M.#(X,3@P-S0W6BTX-#0U-S,````"`?D_`0```'4`````````W*=`R,!"$!JT
MN0@`*R_A@@$`````````+T\]1T4O3U4]0U)$3DE32T%954Y!+T-./5)%0TE0
M245.5%,O0TX]15A#2$%.1T4@0TQ)14Y4("A%6$,P,4-21$=%*2]#3CU#2%))
M4U1/4$A%4BY63TQ010`````>`/@_`0```!L```!6;VQP92P@0VAR:7-T;W!H
M97(@4B`H0U)$*0``'@`X0`$````2````0TA225-43U!(15(N5D],4$4````"
M`?L_`0```'4`````````W*=`R,!"$!JTN0@`*R_A@@$`````````+T\]1T4O
M3U4]0U)$3DE32T%954Y!+T-./5)%0TE0245.5%,O0TX]15A#2$%.1T4@0TQ)
M14Y4("A%6$,P,4-21$=%*2]#3CU#2%))4U1/4$A%4BY63TQ010`````>`/H_
M`0```!L```!6;VQP92P@0VAR:7-T;W!H97(@4B`H0U)$*0``'@`Y0`$````2
M````0TA225-43U!(15(N5D],4$4```!```<PH(JJT+U.P@%```@P#)8.T+U.
MP@$>`#T``0````$`````````'@`=#@$````0````9FQO870@=G,@9&]U8FQE
M`!X`-1`!````-@```#Q&0D4Y,$1&0S(T,$)!-30Q0C,X030S1C,Y.3$S03$V
M1#`R14$S,S)#0'AM8C`R8W)D9V4^````"P`I```````+`",```````,`!A!)
MBRP>`P`'$*L&```#`!`0``````,`$1``````'@`($`$```!E````2$E&3TQ+
M4RU53D1%4DU35D,K*U1(15)%05)%*DQ/5%,J3T9705).24Y'4T%"3U540T].
M5D524TE/3E-/1D1/54),15-43T9,3T%44TY/5RQ)1$].5$M.3U=72$%42$%0
M4$5.4P`````"`7\``0```#8````\1D)%.3!$1D,R-#!"034T,4(S.$$T,T8S
A.3DQ,T$Q-D0P,D5!,S,R0T!X;6(P,F-R9&=E/@````!Z
`
end

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic