<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=ProgId content=Word.Document><meta name=Generator content="Microsoft Word 15"><meta name=Originator content="Microsoft Word 15"><link rel=File-List href="cid:filelist.xml@01DA569E.7C7DC650"><!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="376">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Link"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;
        mso-font-charset:0;
        mso-generic-font-family:roman;
        mso-font-pitch:variable;
        mso-font-signature:-536870145 1107305727 0 0 415 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:-536859905 -1073732485 9 0 511 0;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;
        mso-font-charset:0;
        mso-generic-font-family:modern;
        mso-font-pitch:fixed;
        mso-font-signature:-536869121 64767 1 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-unhide:no;
        mso-style-qformat:yes;
        mso-style-parent:"";
        margin:0in;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ascii-font-family:Calibri;
        mso-fareast-font-family:Calibri;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;
        text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-noshow:yes;
        mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;
        text-underline:single;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        mso-bidi-font-size:10.5pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-unhide:no;
        mso-style-locked:yes;
        mso-style-link:"Plain Text";
        mso-bidi-font-size:10.5pt;
        font-family:"Calibri",sans-serif;
        mso-ascii-font-family:Calibri;
        mso-fareast-font-family:"Times New Roman";
        mso-hansi-font-family:Calibri;}
span.SpellE
        {mso-style-name:"";
        mso-spl-e:yes;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-default-props:yes;
        font-family:"Calibri",sans-serif;
        mso-ascii-font-family:Calibri;
        mso-fareast-font-family:Calibri;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";
        mso-font-kerning:0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;
        mso-header-margin:.5in;
        mso-footer-margin:.5in;
        mso-paper-source:0;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0in 5.4pt 0in 5.4pt;
        mso-para-margin:0in;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ascii-font-family:Calibri;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72" style='tab-interval:.5in;word-wrap:break-word'><div class=WordSection1><p class=MsoPlainText>I don't understand it either,<span style='mso-spacerun:yes'>  </span>the result of the 33/1440 is being stored in a single precision apparently, but it shouldn't be,.<o:p></o:p></p><p class=MsoPlainText>If TT is Double or Extended, then all parts of the evaluation of TT should be carried out in the same way, whether evaluated<o:p></o:p></p><p class=MsoPlainText>By the compiler or the program. <span style='mso-spacerun:yes'> </span>That is what I expect, but that is not what is happening.<o:p></o:p></p><p class=MsoPlainText><span style='font-family:Consolas'><o:p> </o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'>program TESTDBL1 ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><o:p> </o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'>Const<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>TT_Const</span> = 8427 + 33 / 1440.0 ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>SS_Const</span> = 8427 + Double(33 / 1440.0) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><o:p> </o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'>Var<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>AA_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>BB_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>CC_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>DD_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>EE_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>FF_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>GG_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>HH_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>II_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>JJ_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>KK_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>SS_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>TT_Double</span> : Double;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>VV_Single</span> : Single;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>WW_Single</span> : Single;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>XX_Single</span> : Single;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>YY_Single</span> : Single;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>    </span><span class=SpellE>ZZ_Single</span> : Single;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><o:p> </o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'>begin<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>AA_Double</span> := 8427;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>BB_Double</span> := 33/1440;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>CC_Double</span> := <span class=SpellE>AA_Double+BB_Double</span>;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>DD_Double</span> := 8427 + 33 / 1440.0 ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>VV_Single</span> := 8427;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>WW_Single</span> := 33/1440;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>XX_Single</span> := <span class=SpellE>VV_Single+WW_Single</span>;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>YY_Single</span> := 8427 + 33 / 1440.0 ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>ZZ_Single</span> := <span class=SpellE>DD_Double</span>;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>EE_Double</span> := Double(8427 + 33 / 1440.0) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>FF_Double</span> := 8427 + Double(33 / 1440.0) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>GG_Double</span> := Double(8427) + Double(33) / Double(1440.0) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>HH_Double</span> := Double(8427 + Single(33 / 1440.0)) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>II_Double</span> := 33;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>JJ_Double</span> := 1440;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>KK_Double</span> := <span class=SpellE>AA_Double+II_Double</span>/<span class=SpellE>JJ_Double</span>;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>SS_Double</span> := <span class=SpellE>SS_Const</span>;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><span class=SpellE>TT_Double</span> := <span class=SpellE>TT_Const</span>;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span><o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><o:p> </o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>AA_Double</span> := 8427;<span style='mso-spacerun:yes'>                                        </span>=' , <span class=SpellE>AA_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>BB_Double</span> := 33/1440;<span style='mso-spacerun:yes'>                                     </span>=' , <span class=SpellE>BB_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>CC_Double</span> := <span class=SpellE>AA_Double+BB_Double</span>;<span style='mso-spacerun:yes'>                         </span>=' , <span class=SpellE>CC_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>DD_Double</span> := 8427 + 33 / 1440.0 ;<span style='mso-spacerun:yes'>                         </span>=' , <span class=SpellE>DD_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>VV_Single</span> := 8427;<span style='mso-spacerun:yes'>                                        </span>=' , <span class=SpellE>VV_Single</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>WW_Single</span> := 33/1440;<span style='mso-spacerun:yes'>                                     </span>=' , <span class=SpellE>WW_Single</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>XX_Single</span> := <span class=SpellE>VV_Single+WW_Single</span>;<span style='mso-spacerun:yes'>                         </span>=' , <span class=SpellE>XX_Single</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>YY_Single</span> := 8427 + 33 / 1440.0 ;<span style='mso-spacerun:yes'>                         </span>=' , <span class=SpellE>YY_Single</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>ZZ_Single</span> := <span class=SpellE>DD_Double</span>;<span style='mso-spacerun:yes'>                                   </span>=' , <span class=SpellE>ZZ_Single</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>EE_Double</span> := Double(8427 + 33 / 1440.0) ;<span style='mso-spacerun:yes'>                 </span>=' , <span class=SpellE>EE_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>FF_Double</span> := 8427 + Double(33 / 1440.0) ;<span style='mso-spacerun:yes'>                 </span>=' , <span class=SpellE>FF_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>GG_Double</span> := Double(8427) + Double(33) / Double(1440.0) ; =' , <span class=SpellE>GG_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>HH_Double</span> := Double(8427 + Single(33 / 1440.0)) ;<span style='mso-spacerun:yes'>         </span>=' , <span class=SpellE>HH_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>KK_Double</span> := <span class=SpellE>AA_Double+II_Double</span>/<span class=SpellE>JJ_Double</span>;<span style='mso-spacerun:yes'>               </span>=' , <span class=SpellE>KK_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>TT_Const</span> = 8427 + 33 / 1440.0 ;<span style='mso-spacerun:yes'>                           </span>=' , <span class=SpellE>TT_Const</span><span style='mso-spacerun:yes'>  </span>: 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>SS_Const</span> = Double(8427 + 33 / 1440.0);<span style='mso-spacerun:yes'>                    </span>=' , <span class=SpellE>SS_Const</span><span style='mso-spacerun:yes'>  </span>: 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>TT_Double</span> := <span class=SpellE>TT_Const</span>;<span style='mso-spacerun:yes'>                                    </span>=' , <span class=SpellE>TT_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><span style='mso-spacerun:yes'>   </span>WRITELN ( '<span class=SpellE>SS_Double</span> := <span class=SpellE>SS_Const</span>;<span style='mso-spacerun:yes'>                                    </span>=' , <span class=SpellE>SS_Double</span> : 20 : 20 ) ;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'>end.<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:Consolas'><o:p> </o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>AA_Double</span></span><span style='font-family:Consolas'> := 8427;<span style='mso-spacerun:yes'>                                        </span>=8427.00000000000000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>BB_Double</span></span><span style='font-family:Consolas'> := 33/1440;<span style='mso-spacerun:yes'>                                     </span>=0.02291666666666666500<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>CC_Double</span></span><span style='font-family:Consolas'> := <span class=SpellE>AA_Double+BB_Double</span>;<span style='mso-spacerun:yes'>                         </span>=8427.02291666666680000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>DD_Double</span></span><span style='font-family:Consolas'> := 8427 + 33 / 1440.0 ;<span style='mso-spacerun:yes'>                         </span>=8427.02246093750000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>VV_Single</span></span><span style='font-family:Consolas'> := 8427;<span style='mso-spacerun:yes'>                                        </span>=8427.00000000000000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>WW_Single</span></span><span style='font-family:Consolas'> := 33/1440;<span style='mso-spacerun:yes'>                                     </span>=0.02291666716000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>XX_Single</span></span><span style='font-family:Consolas'> := <span class=SpellE>VV_Single+WW_Single</span>;<span style='mso-spacerun:yes'>                         </span>=8427.02246100000000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>YY_Single</span></span><span style='font-family:Consolas'> := 8427 + 33 / 1440.0 ;<span style='mso-spacerun:yes'>                         </span>=8427.02246100000000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>ZZ_Single</span></span><span style='font-family:Consolas'> := <span class=SpellE>DD_Double</span>;<span style='mso-spacerun:yes'>                                   </span>=8427.02246100000000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>EE_Double</span></span><span style='font-family:Consolas'> := Double(8427 + 33 / 1440.0) ;<span style='mso-spacerun:yes'>                 </span>=8427.02246093750000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>FF_Double</span></span><span style='font-family:Consolas'> := 8427 + Double(33 / 1440.0) ;<span style='mso-spacerun:yes'>                 </span>=8427.02291666716340000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>GG_Double</span></span><span style='font-family:Consolas'> := Double(8427) + Double(33) / Double(1440.0) ; =8427.02291666666680000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>HH_Double</span></span><span style='font-family:Consolas'> := Double(8427 + Single(33 / 1440.0)) ;<span style='mso-spacerun:yes'>         </span>=8427.02246093750000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>KK_Double</span></span><span style='font-family:Consolas'> := <span class=SpellE>AA_Double+II_Double</span>/<span class=SpellE>JJ_Double</span>;<span style='mso-spacerun:yes'>               </span>=8427.02291666666680000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>TT_Const</span></span><span style='font-family:Consolas'> = 8427 + 33 / 1440.0 ;<span style='mso-spacerun:yes'>                           </span>=8427.02246100000000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>SS_Const</span></span><span style='font-family:Consolas'> = Double(8427 + 33 / 1440.0);<span style='mso-spacerun:yes'>                    </span>=8427.02291666716340000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>TT_Double</span></span><span style='font-family:Consolas'> := <span class=SpellE>TT_Const</span>;<span style='mso-spacerun:yes'>                                    </span>=8427.02246093750000000000<o:p></o:p></span></p><p class=MsoPlainText><span class=SpellE><span style='font-family:Consolas'>SS_Double</span></span><span style='font-family:Consolas'> := <span class=SpellE>SS_Const</span>;<span style='mso-spacerun:yes'>                                    </span>=8427.02291666716340000000<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I would actually expect values that were calculated by the compiler to ALWAYS be done in extended and only the final answer be reduced to fit into a smaller variable. <o:p></o:p></p><p class=MsoPlainText>If this was the case, then the result of ALL would be 8427.0229…<span style='mso-spacerun:yes'>   </span><o:p></o:p></p><p class=MsoPlainText>This may be debatable, but certainly when the result is to be stored in a double then all operations calculated by the compiler should also be stored in doubles, I don't see how anything else could be argued to be correct.<o:p></o:p></p><p class=MsoPlainText>This is not the case at all, or DD, EE, FF, and GG would all be 8427.0229… <span style='mso-spacerun:yes'> </span>but only<span style='mso-spacerun:yes'>  </span>FF is because I explicitly stated the result of the division is to be a double.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>When the program executes and does math, in the example of BB and CC, and II, it’s always correct, but when the compiler evaluates it, it’s doing it wrong. And storing portions of the calculation in a single even if the final result is a double. <o:p></o:p></p><p class=MsoPlainText>The compiler should ALWAYS use the highest precision possible, because it can be stored in reduce precision variables, but once it’s been butchered by low precision, it can’t be fixed. <o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Constants are also evaluated wrong,<span style='mso-spacerun:yes'>  </span>you don’t know what that constant is going to be used for, so all steps of evaluating a constant MUST be done in extended by the compiler, or the answer is just wrong. <o:p></o:p></p><p class=MsoPlainText><span class=SpellE>TT_Const</span> and <span class=SpellE>SS_Const</span> should have been the same, so that when assigned to double variables <span class=SpellE>TT_Double</span> and <span class=SpellE>SS_Double</span> they would also be the same.<span style='mso-spacerun:yes'>   </span><span class=SpellE>TT_Double</span> and <span class=SpellE>TT_Const</span> are wrong.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I think this is a legitimate bug you have discovered.<span style='mso-spacerun:yes'>  </span>I shouldn’t have to cast the division, it’s not what any user would expect to need to do. <o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>My tests were done on a Windows 10 64 bit machine with FPC Win32.<o:p></o:p></p><p class=MsoPlainText><span style='font-family:"Arial",sans-serif'>■</span> Free Pascal IDE Version 1.0.12 [2023/06/26]<o:p></o:p></p><p class=MsoPlainText><span style='font-family:"Arial",sans-serif'>■</span> Compiler Version 3.3.1-12875-gadf843196a<br style='mso-special-character:line-break'><![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'><![endif]><o:p></o:p></p><p class=MsoPlainText>James<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>-----Original Message-----<br>From: fpc-pascal <fpc-pascal-bounces@lists.freepascal.org> On Behalf Of Thomas Kurz via fpc-pascal<br>Sent: Friday, February 2, 2024 4:37 PM<br>To: FPC-Pascal users discussions <fpc-pascal@lists.freepascal.org><br>Cc: Thomas Kurz <fpc.2021@t-net.ruhr><br>Subject: Re: [fpc-pascal] Floating point question</p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Well, 8427.0229...., that's what I want.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>But what I get is 8427.0224....<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>And that's what I don't unterstand.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>----- Original Message -----<o:p></o:p></p><p class=MsoPlainText>From: Bernd Oppolzer via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org"><span style='color:windowtext;text-decoration:none;text-underline:none'>fpc-pascal@lists.freepascal.org</span></a>><o:p></o:p></p><p class=MsoPlainText>To: Bart via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org"><span style='color:windowtext;text-decoration:none;text-underline:none'>fpc-pascal@lists.freepascal.org</span></a>><o:p></o:p></p><p class=MsoPlainText>Sent: Sunday, January 28, 2024, 10:13:07<o:p></o:p></p><p class=MsoPlainText>Subject: [fpc-pascal] Floating point question<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>To simplify the problem further:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>the addition of 12 /24.0 and the subtraction of 0.5 should be removed, IMO, because both can be done with floats without loss of precision (0.5 can be represented exactly in float).<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>So the problem can be reproduced IMO with this small Pascal program:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>program TESTDBL1 ;<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>var TT : REAL ;<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>begin (* HAUPTPROGRAMM *)<o:p></o:p></p><p class=MsoPlainText><span style='mso-spacerun:yes'>   </span>TT := 8427 + 33 / 1440.0 ;<o:p></o:p></p><p class=MsoPlainText><span style='mso-spacerun:yes'>   </span>WRITELN ( 'tt=' , TT : 20 : 20 ) ;<o:p></o:p></p><p class=MsoPlainText>end (* HAUPTPROGRAMM *) .<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>With my compiler, REAL is always DOUBLE, and the computation is carried out by a P-Code interpreter (or call it just-in-time compiler - much like Java), which is written in C.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>The result is:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>tt=8427.02291666666678790000<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>and it is the same, no matter if I use this simplified computation or the original<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>tt := (8427 - 0.5) + (12 / 24.0) + (33 / 1440.0);<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>My value is between the two other values:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>tt=8427.02291666666680000000<o:p></o:p></p><p class=MsoPlainText>tt=8427.02291666666678790000<o:p></o:p></p><p class=MsoPlainText>ee=8427.02291666666666625000<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>The problem now is:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>the printout of my value suggest an accuracy which in fact is not there, because with double, you can trust only the first 16 decimal digits ... after that, all is speculative a.k.a. wrong. That's why FPC IMO rounds at this place, prints the 8, and then only zeroes.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>The extended format internally has more hex digits and therefore can reliably show more decimal digits.<o:p></o:p></p><p class=MsoPlainText>But the last two are wrong, too (the exact value is 66666... period).<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>HTH,<o:p></o:p></p><p class=MsoPlainText>kind regards<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Bernd<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Am 27.01.2024 um 22:53 schrieb Bart via fpc-pascal:<o:p></o:p></p><p class=MsoPlainText>> On Sat, Jan 27, 2024 at 6:23 PM Thomas Kurz via fpc-pascal <o:p></o:p></p><p class=MsoPlainText>> <<a href="mailto:fpc-pascal@lists.freepascal.org"><span style='color:windowtext;text-decoration:none;text-underline:none'>fpc-pascal@lists.freepascal.org</span></a>><span style='mso-spacerun:yes'>  </span>wrote:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>>> Hmmm... I don't think I can understand that. If the precision of "double" were that bad, it wouldn't be possible to store dates up to a precision of milliseconds in a TDateTime. I have a discrepancy of 40 seconds here.<o:p></o:p></p><p class=MsoPlainText>> Consider the following simplified program:<o:p></o:p></p><p class=MsoPlainText>> ====<o:p></o:p></p><p class=MsoPlainText>> var<o:p></o:p></p><p class=MsoPlainText>><span style='mso-spacerun:yes'>    </span>tt: double;<o:p></o:p></p><p class=MsoPlainText>><span style='mso-spacerun:yes'>    </span>ee: extended;<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> begin<o:p></o:p></p><p class=MsoPlainText>><span style='mso-spacerun:yes'>    </span>tt := (8427 - Double(0.5)) + (12/ Double(24.0)) +<o:p></o:p></p><p class=MsoPlainText>> (33/Double(1440.0)) + (0/Double(86400.0));<o:p></o:p></p><p class=MsoPlainText>><span style='mso-spacerun:yes'>    </span>ee := (8427 - Extended(0.5)) + (12/ Extended(24.0)) +<o:p></o:p></p><p class=MsoPlainText>> (33/Extended(1440.0)) + (0/Extended(86400.0));<o:p></o:p></p><p class=MsoPlainText>><span style='mso-spacerun:yes'>    </span>writeln('tt=',tt:20:20);<o:p></o:p></p><p class=MsoPlainText>><span style='mso-spacerun:yes'>    </span>writeln('ee=',ee:20:20);<o:p></o:p></p><p class=MsoPlainText>> end.<o:p></o:p></p><p class=MsoPlainText>> ===<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> Now see what it outputs:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> C:\Users\Bart\LazarusProjecten\ConsoleProjecten>fpc test.pas Free <o:p></o:p></p><p class=MsoPlainText>> Pascal Compiler version 3.2.2 [2021/05/15] for i386 ...<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> C:\Users\Bart\LazarusProjecten\ConsoleProjecten>test<o:p></o:p></p><p class=MsoPlainText>> tt=8427.02291666666680000000<o:p></o:p></p><p class=MsoPlainText>> ee=8427.02291666666666625000<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> C:\Users\Bart\LazarusProjecten\ConsoleProjecten>fpc -Px86_64 test.pas <o:p></o:p></p><p class=MsoPlainText>> Free Pascal Compiler version 3.2.2 [2021/05/15] for x86_64 ..<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> C:\Users\Bart\LazarusProjecten\ConsoleProjecten>test<o:p></o:p></p><p class=MsoPlainText>> tt=8427.02291666666680000000<o:p></o:p></p><p class=MsoPlainText>> ee=8427.02291666666680000000<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> On Win64 both values are the same, because there Extended = Double.<o:p></o:p></p><p class=MsoPlainText>> On Win32 the Extended version is a bit closer to the exact solution:<o:p></o:p></p><p class=MsoPlainText>> 8427 - 1/2 + 1/2 + 33/1440 = 8427 + 11/480<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> Simple as that.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>> Bart<o:p></o:p></p><p class=MsoPlainText>> _______________________________________________<o:p></o:p></p><p class=MsoPlainText>> fpc-pascal maillist<span style='mso-spacerun:yes'>  </span><a href="mailto:-fpc-pascal@lists.freepascal.org"><span style='color:windowtext;text-decoration:none;text-underline:none'>-fpc-pascal@lists.freepascal.org</span></a> <o:p></o:p></p><p class=MsoPlainText>> <a href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal"><span style='color:windowtext;text-decoration:none;text-underline:none'>https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal</span></a><o:p></o:p></p></div></body></html>