[{"data":1,"prerenderedAt":632},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr04-f":31,"surround-\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr04-f":438,"sidebar-sei-cert-fortran-coding-standard":447},[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":432,"meta":433,"navigation":7,"path":434,"seo":435,"stem":436,"__hash__":437},"content\u002F9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F5.arr04-f.md","ARR04-F. Ensure arrays ranges mapped to devices cover all accessed elements",{"type":35,"value":36,"toc":426},"minimark",[37,41,45,48,51,56,95,200,204,207,277,281,284,362,365,388,392,422],[38,39,33],"h1",{"id":40},"arr04-f-ensure-arrays-ranges-mapped-to-devices-cover-all-accessed-elements",[42,43,44],"p",{},"Developers shall ensure that any array section or range explicitly mapped to a device memory space (e.g., GPU) fully encompasses all indices accessed within the offloaded region to prevent out-of-bounds access and undefined behavior.",[42,46,47],{},"In heterogeneous computing, it is common to map only the array portion required for a computation to reduce data transfer overhead. However, if an offloaded block accesses indices outside the explicitly mapped range, this results in undefined behavior, which can manifest as invalid memory access on the device, hardware traps, segmentation faults, or program crashes.",[42,49,50],{},"An \"apparently accessible\" subscript is invalid if the corresponding memory has not been mapped to the device. While the Fortran standard requires subscripts to stay within declared bounds for safety, the programmer must additionally ensure consistency between data mapping directives and the loop boundaries executed on the device.",[52,53,55],"h2",{"id":54},"noncompliant-code-example","Noncompliant Code Example",[42,57,58,59,63,64,67,68,71,72,75,76,79,80,83,84,87,88,91,92,94],{},"In this noncompliant example, the developer attempts to optimize a vector addition by mapping only the first ",[60,61,62],"code",{},"50"," elements of arrays ",[60,65,66],{},"A"," , ",[60,69,70],{},"B"," , and ",[60,73,74],{},"sum"," to the devide (e.g., GPU). However, the ",[60,77,78],{},"DO"," loop iterates through the entire size of the arrays, from ",[60,81,82],{},"1"," to ",[60,85,86],{},"100",". The GPU kernel will attempt to access elements ",[60,89,90],{},"51"," through ",[60,93,86],{},", which have not been mapped, leading to a memory violation.",[96,97,99],"code-block",{"quality":98},"bad",[100,101,106],"pre",{"className":102,"code":103,"language":104,"meta":105,"style":105},"language-fortran shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","subroutine partial_copy(A, B, sum)\n  use iso_fortran_env, only: real32\n  implicit none\n  real(real32), intent(in)  :: A(100), B(100)\n  real(real32), intent(out) :: sum(100)\n  integer                   :: i\n\n  ! Noncompliant: the mapped range 1:50 does not cover the range 1:100 used in the loop\n  !$omp target map(to: A(1:50), B(1:50)) map(from: sum(1:50))\n  !$omp parallel do private(i)\n  do i = 1, 100\n    sum(i) = A(i) + B(i)\n  end do\n  !$omp end target\nend subroutine\n","fortran","",[60,107,108,116,122,128,134,140,146,152,158,164,170,176,182,188,194],{"__ignoreMap":105},[109,110,113],"span",{"class":111,"line":112},"line",1,[109,114,115],{},"subroutine partial_copy(A, B, sum)\n",[109,117,119],{"class":111,"line":118},2,[109,120,121],{},"  use iso_fortran_env, only: real32\n",[109,123,125],{"class":111,"line":124},3,[109,126,127],{},"  implicit none\n",[109,129,131],{"class":111,"line":130},4,[109,132,133],{},"  real(real32), intent(in)  :: A(100), B(100)\n",[109,135,137],{"class":111,"line":136},5,[109,138,139],{},"  real(real32), intent(out) :: sum(100)\n",[109,141,143],{"class":111,"line":142},6,[109,144,145],{},"  integer                   :: i\n",[109,147,149],{"class":111,"line":148},7,[109,150,151],{"emptyLinePlaceholder":7},"\n",[109,153,155],{"class":111,"line":154},8,[109,156,157],{},"  ! Noncompliant: the mapped range 1:50 does not cover the range 1:100 used in the loop\n",[109,159,161],{"class":111,"line":160},9,[109,162,163],{},"  !$omp target map(to: A(1:50), B(1:50)) map(from: sum(1:50))\n",[109,165,167],{"class":111,"line":166},10,[109,168,169],{},"  !$omp parallel do private(i)\n",[109,171,173],{"class":111,"line":172},11,[109,174,175],{},"  do i = 1, 100\n",[109,177,179],{"class":111,"line":178},12,[109,180,181],{},"    sum(i) = A(i) + B(i)\n",[109,183,185],{"class":111,"line":184},13,[109,186,187],{},"  end do\n",[109,189,191],{"class":111,"line":190},14,[109,192,193],{},"  !$omp end target\n",[109,195,197],{"class":111,"line":196},15,[109,198,199],{},"end subroutine\n",[52,201,203],{"id":202},"compliant-solution","Compliant Solution",[42,205,206],{},"In the compliant solution, the mapped range 1:100 is updated to match the actual usage in the loop.",[96,208,210],{"quality":209},"good",[100,211,213],{"className":102,"code":212,"language":104,"meta":105,"style":105},"subroutine partial_copy(A, B, sum)\n  use iso_fortran_env, only: real32\n  implicit none\n  real(real32), intent(in)  :: A(100), B(100)\n  real(real32), intent(out) :: sum(100)\n  integer                   :: i\n\n  ! Compliant: the mapped range 1:100 covers the range 1:100 used in the loop\n  !$omp target map(to: A(1:100), B(1:100)) map(from: sum(1:100))\n  !$omp parallel do private(i)\n  do i = 1, 100\n    sum(i) = A(i) + B(i)\n  end do\n  !$omp end target\nend subroutine\n",[60,214,215,219,223,227,231,235,239,243,248,253,257,261,265,269,273],{"__ignoreMap":105},[109,216,217],{"class":111,"line":112},[109,218,115],{},[109,220,221],{"class":111,"line":118},[109,222,121],{},[109,224,225],{"class":111,"line":124},[109,226,127],{},[109,228,229],{"class":111,"line":130},[109,230,133],{},[109,232,233],{"class":111,"line":136},[109,234,139],{},[109,236,237],{"class":111,"line":142},[109,238,145],{},[109,240,241],{"class":111,"line":148},[109,242,151],{"emptyLinePlaceholder":7},[109,244,245],{"class":111,"line":154},[109,246,247],{},"  ! Compliant: the mapped range 1:100 covers the range 1:100 used in the loop\n",[109,249,250],{"class":111,"line":160},[109,251,252],{},"  !$omp target map(to: A(1:100), B(1:100)) map(from: sum(1:100))\n",[109,254,255],{"class":111,"line":166},[109,256,169],{},[109,258,259],{"class":111,"line":172},[109,260,175],{},[109,262,263],{"class":111,"line":178},[109,264,181],{},[109,266,267],{"class":111,"line":184},[109,268,187],{},[109,270,271],{"class":111,"line":190},[109,272,193],{},[109,274,275],{"class":111,"line":196},[109,276,199],{},[52,278,280],{"id":279},"risk-assessment","Risk Assessment",[42,282,283],{},"Failing to map the used range of an array results in out-of-bounds device memory access. This can lead to information exposure if the device reads unmapped memory, arbitrary code execution if an unmapped write operation is exploited, or program crashes or hardware faults due to invalid memory access.",[285,286,287,308],"table",{},[288,289,290],"thead",{},[291,292,293,296,298,300,302,304,306],"tr",{},[294,295],"th",{},[294,297],{},[294,299],{},[294,301],{},[294,303],{},[294,305],{},[294,307],{},[309,310,311,335],"tbody",{},[291,312,313,317,320,323,326,329,332],{},[314,315,316],"td",{},"Recommendation",[314,318,319],{},"Severity",[314,321,322],{},"Likelihood",[314,324,325],{},"Detectable",[314,327,328],{},"Repairable",[314,330,331],{},"Priority",[314,333,334],{},"Level",[291,336,337,340,343,346,349,351,357],{},[314,338,339],{},"ARR04-F",[314,341,342],{},"High",[314,344,345],{},"Likely",[314,347,348],{},"Yes",[314,350,348],{},[314,352,353],{},[354,355,356],"strong",{},"P27",[314,358,359],{},[354,360,361],{},"L1",[363,364],"hr",{},[42,366,367,375,376,375,382],{},[368,369,371],"a",{"href":370},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002Fpre30-c",[372,373],"img",{"src":374},"attachments\u002F629047349\u002F638779623.png"," ",[368,377,379],{"href":378},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fpreprocessor-pre\u002F",[372,380],{"src":381},"attachments\u002F629047349\u002F638779624.png",[368,383,385],{"href":384},"\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ\u002Ftyp01-f",[372,386],{"src":387},"attachments\u002F629047349\u002F638779625.png",[52,389,391],{"id":390},"attachments","Attachments:",[393,394,398],"div",{"className":395,"align":397},[396],"greybox","left",[42,399,400,375,403,406,407,410,375,412,406,415,417,375,419,406],{},[372,401],{"alt":105,"src":402},"images\u002Ficons\u002Fbullet_blue.gif",[368,404,405],{"href":374},"button_arrow_left.png"," (image\u002Fpng)",[408,409],"br",{},[372,411],{"alt":105,"src":402},[368,413,414],{"href":381},"button_arrow_up.png",[408,416],{},[372,418],{"alt":105,"src":402},[368,420,421],{"href":387},"button_arrow_right.png",[423,424,425],"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":105,"searchDepth":118,"depth":118,"links":427},[428,429,430,431],{"id":54,"depth":118,"text":55},{"id":202,"depth":118,"text":203},{"id":279,"depth":118,"text":280},{"id":390,"depth":118,"text":391},"md",{},"\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr\u002Farr04-f",{"title":33,"description":44},"9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F5.arr04-f","0n18dBNx5uVbuXtH-xCdhPcAXc8tVZckSGnqw0KSfaI",[439,443],{"title":440,"path":441,"stem":442,"children":-1},"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":444,"path":445,"stem":446,"children":-1},"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",[448],{"title":449,"path":450,"stem":451,"children":452},"Sei Cert Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard","9.sei-cert-fortran-coding-standard",[453,456,472,483,509,519,523,533,537,541,545,549,567,585,589,607,628],{"title":454,"path":450,"stem":455},"SEI CERT Fortran Coding Standard","9.sei-cert-fortran-coding-standard\u002F1.index",{"title":457,"path":458,"stem":459,"children":460},"Arrays (ARR)","\u002Fsei-cert-fortran-coding-standard\u002Farrays-arr","9.sei-cert-fortran-coding-standard\u002F02.arrays-arr\u002F1.index",[461,462,466,470,471],{"title":457,"path":458,"stem":459},{"title":463,"path":464,"stem":465},"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":467,"path":468,"stem":469},"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":440,"path":441,"stem":442},{"title":33,"path":434,"stem":436},{"title":444,"path":445,"stem":446,"children":473},[474,475,479],{"title":444,"path":445,"stem":446},{"title":476,"path":477,"stem":478},"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":480,"path":481,"stem":482},"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":484,"path":485,"stem":486,"children":487},"Concurrency (CON)","\u002Fsei-cert-fortran-coding-standard\u002Fconcurrency-con","9.sei-cert-fortran-coding-standard\u002F04.concurrency-con\u002F1.index",[488,489,493,497,501,505],{"title":484,"path":485,"stem":486},{"title":490,"path":491,"stem":492},"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":494,"path":495,"stem":496},"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":498,"path":499,"stem":500},"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":502,"path":503,"stem":504},"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":506,"path":507,"stem":508},"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":510,"path":511,"stem":512,"children":513},"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",[514,515],{"title":510,"path":511,"stem":512},{"title":516,"path":517,"stem":518},"EIA01-F. Enforce evaluation order in floating-point expressions","\u002Fsei-cert-fortran-coding-standard\u002Fexceptions-and-ieee-arithmetic-eia\u002Feia01-f","9.sei-cert-fortran-coding-standard\u002F05.exceptions-and-ieee-arithmetic-eia\u002F2.eia01-f",{"title":520,"path":521,"stem":522},"Execution Control (EXC)","\u002Fsei-cert-fortran-coding-standard\u002Fexecution-control-exc","9.sei-cert-fortran-coding-standard\u002F06.execution-control-exc",{"title":524,"path":525,"stem":526,"children":527},"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",[528,529],{"title":524,"path":525,"stem":526},{"title":530,"path":531,"stem":532},"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":534,"path":535,"stem":536},"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":538,"path":539,"stem":540},"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":542,"path":543,"stem":544},"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":546,"path":547,"stem":548},"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":550,"path":551,"stem":552,"children":553},"Miscellaneous (MSC)","\u002Fsei-cert-fortran-coding-standard\u002Fmiscellaneous-msc","9.sei-cert-fortran-coding-standard\u002F12.miscellaneous-msc\u002F1.index",[554,555,559,563],{"title":550,"path":551,"stem":552},{"title":556,"path":557,"stem":558},"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":560,"path":561,"stem":562},"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":564,"path":565,"stem":566},"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":568,"path":569,"stem":570,"children":571},"Procedures (PRC)","\u002Fsei-cert-fortran-coding-standard\u002Fprocedures-prc","9.sei-cert-fortran-coding-standard\u002F13.procedures-prc\u002F1.index",[572,573,577,581],{"title":568,"path":569,"stem":570},{"title":574,"path":575,"stem":576},"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":578,"path":579,"stem":580},"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":582,"path":583,"stem":584},"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":586,"path":587,"stem":588},"Program Units (PRU)","\u002Fsei-cert-fortran-coding-standard\u002Fprogram-units-pru","9.sei-cert-fortran-coding-standard\u002F14.program-units-pru",{"title":590,"path":591,"stem":592,"children":593},"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",[594,595,599,603],{"title":590,"path":591,"stem":592},{"title":596,"path":597,"stem":598},"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":600,"path":601,"stem":602},"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":604,"path":605,"stem":606},"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":608,"path":609,"stem":610,"children":611},"Types (TYP)","\u002Fsei-cert-fortran-coding-standard\u002Ftypes-typ","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F1.index",[612,613,616,620,624],{"title":608,"path":609,"stem":610},{"title":614,"path":384,"stem":615},"TYP01-F. Use Intrinsic Assignment for Character Entities","9.sei-cert-fortran-coding-standard\u002F16.types-typ\u002F2.typ01-f",{"title":617,"path":618,"stem":619},"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":621,"path":622,"stem":623},"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":625,"path":626,"stem":627},"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":629,"path":630,"stem":631},"Acknowledgments","\u002Fsei-cert-fortran-coding-standard\u002Facknowledgements","9.sei-cert-fortran-coding-standard\u002Facknowledgements",1780320167203]