[{"data":1,"prerenderedAt":603},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia\u002Feia01-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia\u002Feia01-f":408,"sidebar-sei-cert-fortran-coding-standard":417},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":30,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24,27],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard\u002F",{"title":25,"path":26},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":28,"path":29},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":32,"title":33,"body":34,"description":44,"extension":402,"meta":403,"navigation":7,"path":404,"seo":405,"stem":406,"__hash__":407},"content\u002F9.sei-cert-fortran-coding-standard\u002F05.exceptions-and-ieee-arithmetic-eia\u002F2.eia01-f.md","EIA01-F. Enforce evaluation order in floating-point expressions",{"type":35,"value":36,"toc":394},"minimark",[37,41,45,57,64,69,72,75,156,160,163,216,219,225,242,245,256,273,277,280,358,362,390],[38,39,33],"h1",{"id":40},"eia01-f-enforce-evaluation-order-in-floating-point-expressions",[42,43,44],"p",{},"Programmers shall use parentheses to enforce the intended order of evaluation in floating-point expressions and avoid compiler flags that allow unsafe reassociation.",[42,46,47,48,52,53,56],{},"Floating-point arithmetic approximates real-number mathematics. Because of finite precision and limited range, standard mathematical rules such as associativity and distributivity laws do not generally hold. For example, ",[49,50,51],"code",{},"  (x + y) + z "," is not guaranteed to produce the same result as ",[49,54,55],{},"  x + (y + z) "," due to rounding errors that depend on operand magnitudes.",[42,58,59,60,63],{},"In Fortran, the compiler may reorder operations to improve performance, provided that the grouping defined by parentheses is preserved. Omitting parentheses allows the compiler or hardware to reassociate terms, which can introduce unexpected rounding errors or loss of precision. Additionally, aggressive optimization flags (e.g., ",[49,61,62],{},"-Ofast"," ) may allow transformations that override standard-conforming protections, potentially producing numerically unstable results.",[65,66,68],"h2",{"id":67},"noncompliant-code-example","Noncompliant Code Example",[42,70,71],{},"In this example, the program calculates the sum of three values, where one value is orders of magnitude larger than the others. Without parentheses, the compiler is free to choose the order of evaluation. This can cause the smaller value to be effectively lost due to floating-point rounding, producing an unexpected result.",[42,73,74],{},"While modern compilers may sometimes produce the intended result, this behavior is not guaranteed and may vary across compilers, platforms, and optimization settings.",[76,77,79],"code-block",{"quality":78},"bad",[80,81,86],"pre",{"className":82,"code":83,"language":84,"meta":85,"style":85},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","program association\n  use iso_fortran_env, only: real32\n  implicit none\n  real(real32) :: a = 1.0e20_real32\n  real(real32) :: b = -1.0e20_real32\n  real(real32) :: c = 1.234567_real32\n  real(real32) :: res\n\n  res = a + b + c\n  print *, res\nend program\n","fortran","",[49,87,88,96,102,108,114,120,126,132,138,144,150],{"__ignoreMap":85},[89,90,93],"span",{"class":91,"line":92},"line",1,[89,94,95],{},"program association\n",[89,97,99],{"class":91,"line":98},2,[89,100,101],{},"  use iso_fortran_env, only: real32\n",[89,103,105],{"class":91,"line":104},3,[89,106,107],{},"  implicit none\n",[89,109,111],{"class":91,"line":110},4,[89,112,113],{},"  real(real32) :: a = 1.0e20_real32\n",[89,115,117],{"class":91,"line":116},5,[89,118,119],{},"  real(real32) :: b = -1.0e20_real32\n",[89,121,123],{"class":91,"line":122},6,[89,124,125],{},"  real(real32) :: c = 1.234567_real32\n",[89,127,129],{"class":91,"line":128},7,[89,130,131],{},"  real(real32) :: res\n",[89,133,135],{"class":91,"line":134},8,[89,136,137],{"emptyLinePlaceholder":7},"\n",[89,139,141],{"class":91,"line":140},9,[89,142,143],{},"  res = a + b + c\n",[89,145,147],{"class":91,"line":146},10,[89,148,149],{},"  print *, res\n",[89,151,153],{"class":91,"line":152},11,[89,154,155],{},"end program\n",[65,157,159],{"id":158},"compliant-solution","Compliant Solution",[42,161,162],{},"Using parentheses explicitly enforces the intended order of evaluation. The Fortran standard requires that expressions inside parentheses be treated as a single data entity, which prevents the compiler from reassociating terms and preserves numerical accuracy.",[76,164,166],{"quality":165},"good",[80,167,169],{"className":82,"code":168,"language":84,"meta":85,"style":85},"program association\n  use iso_fortran_env, only: real32\n  implicit none\n  real(real32) :: a = 1.0e20_real32\n  real(real32) :: b = -1.0e20_real32\n  real(real32) :: c = 1.234567_real32\n  real(real32) :: res\n\n  res = (a + b) + c\n  print *, res\nend program\n",[49,170,171,175,179,183,187,191,195,199,203,208,212],{"__ignoreMap":85},[89,172,173],{"class":91,"line":92},[89,174,95],{},[89,176,177],{"class":91,"line":98},[89,178,101],{},[89,180,181],{"class":91,"line":104},[89,182,107],{},[89,184,185],{"class":91,"line":110},[89,186,113],{},[89,188,189],{"class":91,"line":116},[89,190,119],{},[89,192,193],{"class":91,"line":122},[89,194,125],{},[89,196,197],{"class":91,"line":128},[89,198,131],{},[89,200,201],{"class":91,"line":134},[89,202,137],{"emptyLinePlaceholder":7},[89,204,205],{"class":91,"line":140},[89,206,207],{},"  res = (a + b) + c\n",[89,209,210],{"class":91,"line":146},[89,211,149],{},[89,213,214],{"class":91,"line":152},[89,215,155],{},[65,217,68],{"id":218},"noncompliant-code-example-1",[42,220,221,222,224],{},"Improper use of aggressive optimization flags can directly affect the precision of floating-point calculations. For example. GFortran's ",[49,223,62],{}," enables optimizations that may reorder operations, ignore parentheses, or apply unsafe math transformations to improve runtime. This can invalidate numerical correctness, even in otherwise well-written code.",[76,226,227],{"quality":78},[80,228,230],{"className":82,"code":229,"language":84,"meta":85,"style":85},"# Noncompliant:-Ofast may allow unsafe floating-point reassociation\ngfortran -Ofast main.f90 \n",[49,231,232,237],{"__ignoreMap":85},[89,233,234],{"class":91,"line":92},[89,235,236],{},"# Noncompliant:-Ofast may allow unsafe floating-point reassociation\n",[89,238,239],{"class":91,"line":98},[89,240,241],{},"gfortran -Ofast main.f90\n",[65,243,159],{"id":244},"compliant-solution-1",[42,246,247,248,251,252,255],{},"Use compiler flags that optimize performance without compromising standard-conforming floating-point arithmetic. Flags such as ",[49,249,250],{},"-O2"," or ",[49,253,254],{},"-O3"," provide high optimization while preserving evaluation order and rounding behavior.",[76,257,258],{"quality":165},[80,259,261],{"className":82,"code":260,"language":84,"meta":85,"style":85},"# Compliant: High optimization while preserving numerical accuracy\ngfortran -O3 main.f90 \n",[49,262,263,268],{"__ignoreMap":85},[89,264,265],{"class":91,"line":92},[89,266,267],{},"# Compliant: High optimization while preserving numerical accuracy\n",[89,269,270],{"class":91,"line":98},[89,271,272],{},"gfortran -O3 main.f90\n",[65,274,276],{"id":275},"risk-assessment","Risk Assessment",[42,278,279],{},"Failure to understand the limitations of floating-point representation and its implications on the arrangement of expressions can cause unexpected arithmetic results.",[281,282,283,304],"table",{},[284,285,286],"thead",{},[287,288,289,292,294,296,298,300,302],"tr",{},[290,291],"th",{},[290,293],{},[290,295],{},[290,297],{},[290,299],{},[290,301],{},[290,303],{},[305,306,307,331],"tbody",{},[287,308,309,313,316,319,322,325,328],{},[310,311,312],"td",{},"Recommendation",[310,314,315],{},"Severity",[310,317,318],{},"Likelihood",[310,320,321],{},"Detectable",[310,323,324],{},"Repairable",[310,326,327],{},"Priority",[310,329,330],{},"Level",[287,332,333,336,339,342,345,347,353],{},[310,334,335],{},"EIA01-F",[310,337,338],{},"Low",[310,340,341],{},"Probable",[310,343,344],{},"No",[310,346,344],{},[310,348,349],{},[350,351,352],"strong",{},"P3",[310,354,355],{},[350,356,357],{},"L3",[65,359,361],{"id":360},"bibliography","Bibliography",[281,363,364,372],{},[284,365,366],{},[287,367,368,370],{},[290,369],{},[290,371],{},[305,373,374],{},[287,375,376,387],{},[310,377,378,379,386],{},"[ ",[380,381,385],"a",{"href":382,"rel":383},"https:\u002F\u002Fj3-fortran.org\u002Fdoc\u002Fyear\u002F24\u002F24-007.pdf",[384],"nofollow","Fortran 2023 Interpretation Document"," ]",[310,388,389],{},"Section 10.1.5.2.4 and 10.1.9",[391,392,393],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":85,"searchDepth":98,"depth":98,"links":395},[396,397,398,399,400,401],{"id":67,"depth":98,"text":68},{"id":158,"depth":98,"text":159},{"id":218,"depth":98,"text":68},{"id":244,"depth":98,"text":159},{"id":275,"depth":98,"text":276},{"id":360,"depth":98,"text":361},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia\u002Feia01-f",{"title":33,"description":44},"9.sei-cert-fortran-coding-standard\u002F05.exceptions-and-ieee-arithmetic-eia\u002F2.eia01-f","Qdqno26p8ckSozFpi_pOAB0-V4rRXKNeZ9CCUUpn3kw",[409,413],{"title":410,"path":411,"stem":412,"children":-1},"Exceptions and IEEE Arithmetic (EIA)","\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia","9.sei-cert-fortran-coding-standard\u002F05.exceptions-and-ieee-arithmetic-eia\u002F1.index",{"title":414,"path":415,"stem":416,"children":-1},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",[418],{"title":419,"path":420,"stem":421,"children":422},"Sei Cert Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard",[423,426,448,462,488,492,493,503,507,511,515,519,537,555,559,577,599],{"title":424,"path":420,"stem":425},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":427,"path":428,"stem":429,"children":430},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[431,432,436,440,444],{"title":427,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"ARR01-F. Do not use out-of-bounds arrays subscripts","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr01-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F2.arr01-f",{"title":437,"path":438,"stem":439},"ARR02-F. Declare array dummy arguments as assumed-shape","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr02-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F3.arr02-f",{"title":441,"path":442,"stem":443},"ARR03-F. Specify array bounds when copying data to device memory","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr03-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F4.arr03-f",{"title":445,"path":446,"stem":447},"ARR04-F. Ensure arrays ranges mapped to devices cover all accessed elements","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr04-f","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F5.arr04-f",{"title":449,"path":450,"stem":451,"children":452},"Attribute Declarations and Specifications (ADS)","\u002Fsei-cert-fortran-coding-standard\u002Fattribute-declarations-and-specifications-ads","9.sei-cert-fortran-coding-standard\u002F03.attribute-declarations-and-specifications-ads\u002F1.index",[453,454,458],{"title":449,"path":450,"stem":451},{"title":455,"path":456,"stem":457},"ADS01-F. Explicitly declare pure procedures","\u002Fsei-cert-fortran-coding-standard\u002Fattribute-declarations-and-specifications-ads\u002Fads01-f","9.sei-cert-fortran-coding-standard\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads01-f",{"title":459,"path":460,"stem":461},"ADS02-F. Separate initialization from declaration to avoid implicit variable persistence","\u002Fsei-cert-fortran-coding-standard\u002Fattribute-declarations-and-specifications-ads\u002Fads02-f","9.sei-cert-fortran-coding-standard\u002F03.attribute-declarations-and-specifications-ads\u002F2.ads02-f",{"title":463,"path":464,"stem":465,"children":466},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[467,468,472,476,480,484],{"title":463,"path":464,"stem":465},{"title":469,"path":470,"stem":471},"CON01-F. Explicitly declare OpenMP data-sharing attributes for all variables","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon01-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F2.con01-f",{"title":473,"path":474,"stem":475},"CON02-F. Protect reduction variables in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon02-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F3.con02-f",{"title":477,"path":478,"stem":479},"CON03-F. Protect multithreading recurrences to avoid data races","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon03-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F4.con03-f",{"title":481,"path":482,"stem":483},"CON04-F. Do not use out-of-dimension subscripts in multithreaded code","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon04-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F5.con04-f",{"title":485,"path":486,"stem":487},"CON05-F. Ensure correct OpenMP datascoping of variables in parallel regions","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con\u002Fcon05-f","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F6.con05-f",{"title":410,"path":411,"stem":412,"children":489},[490,491],{"title":410,"path":411,"stem":412},{"title":33,"path":404,"stem":406},{"title":414,"path":415,"stem":416},{"title":494,"path":495,"stem":496,"children":497},"Expressions and Assignment (EXA)","\u002Fsei-cert-fortran-coding-standard\u002Fexpressions-and-assignment-exa","9.sei-cert-fortran-coding-standard\u002F07.expressions-and-assignment-exa\u002F1.index",[498,499],{"title":494,"path":495,"stem":496},{"title":500,"path":501,"stem":502},"EXA01-F. Do not read uninitialized memory","\u002Fsei-cert-fortran-coding-standard\u002Fexpressions-and-assignment-exa\u002Fexa01-f","9.sei-cert-fortran-coding-standard\u002F07.expressions-and-assignment-exa\u002F2.exa01-f",{"title":504,"path":505,"stem":506},"Input and Output Editing (IOE)","\u002Fsei-cert-fortran-coding-standard\u002Finput-and-output-editing-ioe","9.sei-cert-fortran-coding-standard\u002F08.input-and-output-editing-ioe",{"title":508,"path":509,"stem":510},"Input and Output Statements (IOS)","\u002Fsei-cert-fortran-coding-standard\u002Finput-and-output-statements-ios","9.sei-cert-fortran-coding-standard\u002F09.input-and-output-statements-ios",{"title":512,"path":513,"stem":514},"Interoperability with C (IWC)","\u002Fsei-cert-fortran-coding-standard\u002Finteroperability-with-c-iwc","9.sei-cert-fortran-coding-standard\u002F10.interoperability-with-c-iwc",{"title":516,"path":517,"stem":518},"Intrinsic Procedures and Modules (IPM)","\u002Fsei-cert-fortran-coding-standard\u002Fintrinsic-procedures-and-modules-ipm","9.sei-cert-fortran-coding-standard\u002F11.intrinsic-procedures-and-modules-ipm",{"title":520,"path":521,"stem":522,"children":523},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[524,525,529,533],{"title":520,"path":521,"stem":522},{"title":526,"path":527,"stem":528},"MSC01-F. Avoid using legacy or obsolescent Fortran constructs","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc\u002Fmsc01-f","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F2.msc01-f",{"title":530,"path":531,"stem":532},"MSC02-F. Beware of compiler-specific extensions","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc\u002Fmsc02-f","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F3.msc02-f",{"title":534,"path":535,"stem":536},"MSC03-F. Do not depend on undefined behavior","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc\u002Fmsc03-f","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F4.msc03-f",{"title":538,"path":539,"stem":540,"children":541},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index",[542,543,547,551],{"title":538,"path":539,"stem":540},{"title":544,"path":545,"stem":546},"PRC01-F. Disable the implicit declaration of procedures","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc01-f","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F2.prc01-f",{"title":548,"path":549,"stem":550},"PRC02-F. Avoid implicit interfaces by using module procedures","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc02-f","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F3.prc02-f",{"title":552,"path":553,"stem":554},"PRC03-F. Declare the intent for all dummy arguments","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc\u002Fprc03-f","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F4.prc03-f",{"title":556,"path":557,"stem":558},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":560,"path":561,"stem":562,"children":563},"Scope, Association, and Definition (SAD)","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F1.index",[564,565,569,573],{"title":560,"path":561,"stem":562},{"title":566,"path":567,"stem":568},"SAD02-F. Minimize imported module entities using the ONLY clause","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Fsad02-f","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F2.sad02-f",{"title":570,"path":571,"stem":572},"SAD03-F. Replace common block with modules for safer data encapsulation","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Fsad03-f","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F3.sad03-f",{"title":574,"path":575,"stem":576},"Limit the scope of variables and procedures","\u002Fsei-cert-fortran-coding-standard\u002Fscope-association-and-definition-sad\u002Flimit-the-scope-of-variables-and-procedures","9.sei-cert-fortran-coding-standard\u002F15.scope-association-and-definition-sad\u002F4.limit-the-scope-of-variables-and-procedures",{"title":578,"path":579,"stem":580,"children":581},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[582,583,587,591,595],{"title":578,"path":579,"stem":580},{"title":584,"path":585,"stem":586},"TYP01-F. Use Intrinsic Assignment for Character Entities","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":588,"path":589,"stem":590},"TYP02-F. Prohibit implicit typing in all program units","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp02-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F3.typ02-f",{"title":592,"path":593,"stem":594},"TYP03-F. Ensure intrinsic function arguments match intended precision","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp03-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F4.typ03-f",{"title":596,"path":597,"stem":598},"TYP04-F. Centralize kind definitions to ensure consistent precision","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp04-f","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F5.typ04-f",{"title":600,"path":601,"stem":602},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320167482]