2019-06-13 16:25:11 +02:00
<!DOCTYPE html>
<!-- Generated by Cython 0.29 -->
< html >
< head >
2021-11-15 16:53:30 +01:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / >
2019-06-13 16:25:11 +02:00
< title > Cython: lcn.pyx< / title >
< style type = "text/css" >
body . cython { font-family : courier ; font-size : 12 ; }
. cython . tag { }
. cython . line { margin : 0 em }
. cython . code { font-size : 9 ; color : #444444 ; display : none ; margin : 0 px 0 px 0 px 8 px ; border-left : 8 px none ; }
. cython . line . run { background-color : #B0FFB0 ; }
. cython . line . mis { background-color : #FFB0B0 ; }
. cython . code . run { border-left : 8 px solid #B0FFB0 ; }
. cython . code . mis { border-left : 8 px solid #FFB0B0 ; }
. cython . code . py_c_api { color : red ; }
. cython . code . py_macro_api { color : #FF7000 ; }
. cython . code . pyx_c_api { color : #FF3000 ; }
. cython . code . pyx_macro_api { color : #FF7000 ; }
. cython . code . refnanny { color : #FFA000 ; }
. cython . code . trace { color : #FFA000 ; }
. cython . code . error_goto { color : #FFA000 ; }
. cython . code . coerce { color : #008000 ; border : 1 px dotted #008000 }
. cython . code . py_attr { color : #FF0000 ; font-weight : bold ; }
. cython . code . c_attr { color : #0000FF ; }
. cython . code . py_call { color : #FF0000 ; font-weight : bold ; }
. cython . code . c_call { color : #0000FF ; }
. cython . score-0 { background-color : #FFFFff ; }
. cython . score-1 { background-color : #FFFFe7 ; }
. cython . score-2 { background-color : #FFFFd4 ; }
. cython . score-3 { background-color : #FFFFc4 ; }
. cython . score-4 { background-color : #FFFFb6 ; }
. cython . score-5 { background-color : #FFFFaa ; }
. cython . score-6 { background-color : #FFFF9f ; }
. cython . score-7 { background-color : #FFFF96 ; }
. cython . score-8 { background-color : #FFFF8d ; }
. cython . score-9 { background-color : #FFFF86 ; }
. cython . score-10 { background-color : #FFFF7f ; }
. cython . score-11 { background-color : #FFFF79 ; }
. cython . score-12 { background-color : #FFFF73 ; }
. cython . score-13 { background-color : #FFFF6e ; }
. cython . score-14 { background-color : #FFFF6a ; }
. cython . score-15 { background-color : #FFFF66 ; }
. cython . score-16 { background-color : #FFFF62 ; }
. cython . score-17 { background-color : #FFFF5e ; }
. cython . score-18 { background-color : #FFFF5b ; }
. cython . score-19 { background-color : #FFFF57 ; }
. cython . score-20 { background-color : #FFFF55 ; }
. cython . score-21 { background-color : #FFFF52 ; }
. cython . score-22 { background-color : #FFFF4f ; }
. cython . score-23 { background-color : #FFFF4d ; }
. cython . score-24 { background-color : #FFFF4b ; }
. cython . score-25 { background-color : #FFFF48 ; }
. cython . score-26 { background-color : #FFFF46 ; }
. cython . score-27 { background-color : #FFFF44 ; }
. cython . score-28 { background-color : #FFFF43 ; }
. cython . score-29 { background-color : #FFFF41 ; }
. cython . score-30 { background-color : #FFFF3f ; }
. cython . score-31 { background-color : #FFFF3e ; }
. cython . score-32 { background-color : #FFFF3c ; }
. cython . score-33 { background-color : #FFFF3b ; }
. cython . score-34 { background-color : #FFFF39 ; }
. cython . score-35 { background-color : #FFFF38 ; }
. cython . score-36 { background-color : #FFFF37 ; }
. cython . score-37 { background-color : #FFFF36 ; }
. cython . score-38 { background-color : #FFFF35 ; }
. cython . score-39 { background-color : #FFFF34 ; }
. cython . score-40 { background-color : #FFFF33 ; }
. cython . score-41 { background-color : #FFFF32 ; }
. cython . score-42 { background-color : #FFFF31 ; }
. cython . score-43 { background-color : #FFFF30 ; }
. cython . score-44 { background-color : #FFFF2f ; }
. cython . score-45 { background-color : #FFFF2e ; }
. cython . score-46 { background-color : #FFFF2d ; }
. cython . score-47 { background-color : #FFFF2c ; }
. cython . score-48 { background-color : #FFFF2b ; }
. cython . score-49 { background-color : #FFFF2b ; }
. cython . score-50 { background-color : #FFFF2a ; }
. cython . score-51 { background-color : #FFFF29 ; }
. cython . score-52 { background-color : #FFFF29 ; }
. cython . score-53 { background-color : #FFFF28 ; }
. cython . score-54 { background-color : #FFFF27 ; }
. cython . score-55 { background-color : #FFFF27 ; }
. cython . score-56 { background-color : #FFFF26 ; }
. cython . score-57 { background-color : #FFFF26 ; }
. cython . score-58 { background-color : #FFFF25 ; }
. cython . score-59 { background-color : #FFFF24 ; }
. cython . score-60 { background-color : #FFFF24 ; }
. cython . score-61 { background-color : #FFFF23 ; }
. cython . score-62 { background-color : #FFFF23 ; }
. cython . score-63 { background-color : #FFFF22 ; }
. cython . score-64 { background-color : #FFFF22 ; }
. cython . score-65 { background-color : #FFFF22 ; }
. cython . score-66 { background-color : #FFFF21 ; }
. cython . score-67 { background-color : #FFFF21 ; }
. cython . score-68 { background-color : #FFFF20 ; }
. cython . score-69 { background-color : #FFFF20 ; }
. cython . score-70 { background-color : #FFFF1f ; }
. cython . score-71 { background-color : #FFFF1f ; }
. cython . score-72 { background-color : #FFFF1f ; }
. cython . score-73 { background-color : #FFFF1e ; }
. cython . score-74 { background-color : #FFFF1e ; }
. cython . score-75 { background-color : #FFFF1e ; }
. cython . score-76 { background-color : #FFFF1d ; }
. cython . score-77 { background-color : #FFFF1d ; }
. cython . score-78 { background-color : #FFFF1c ; }
. cython . score-79 { background-color : #FFFF1c ; }
. cython . score-80 { background-color : #FFFF1c ; }
. cython . score-81 { background-color : #FFFF1c ; }
. cython . score-82 { background-color : #FFFF1b ; }
. cython . score-83 { background-color : #FFFF1b ; }
. cython . score-84 { background-color : #FFFF1b ; }
. cython . score-85 { background-color : #FFFF1a ; }
. cython . score-86 { background-color : #FFFF1a ; }
. cython . score-87 { background-color : #FFFF1a ; }
. cython . score-88 { background-color : #FFFF1a ; }
. cython . score-89 { background-color : #FFFF19 ; }
. cython . score-90 { background-color : #FFFF19 ; }
. cython . score-91 { background-color : #FFFF19 ; }
. cython . score-92 { background-color : #FFFF19 ; }
. cython . score-93 { background-color : #FFFF18 ; }
. cython . score-94 { background-color : #FFFF18 ; }
. cython . score-95 { background-color : #FFFF18 ; }
. cython . score-96 { background-color : #FFFF18 ; }
. cython . score-97 { background-color : #FFFF17 ; }
. cython . score-98 { background-color : #FFFF17 ; }
. cython . score-99 { background-color : #FFFF17 ; }
. cython . score-100 { background-color : #FFFF17 ; }
. cython . score-101 { background-color : #FFFF16 ; }
. cython . score-102 { background-color : #FFFF16 ; }
. cython . score-103 { background-color : #FFFF16 ; }
. cython . score-104 { background-color : #FFFF16 ; }
. cython . score-105 { background-color : #FFFF16 ; }
. cython . score-106 { background-color : #FFFF15 ; }
. cython . score-107 { background-color : #FFFF15 ; }
. cython . score-108 { background-color : #FFFF15 ; }
. cython . score-109 { background-color : #FFFF15 ; }
. cython . score-110 { background-color : #FFFF15 ; }
. cython . score-111 { background-color : #FFFF15 ; }
. cython . score-112 { background-color : #FFFF14 ; }
. cython . score-113 { background-color : #FFFF14 ; }
. cython . score-114 { background-color : #FFFF14 ; }
. cython . score-115 { background-color : #FFFF14 ; }
. cython . score-116 { background-color : #FFFF14 ; }
. cython . score-117 { background-color : #FFFF14 ; }
. cython . score-118 { background-color : #FFFF13 ; }
. cython . score-119 { background-color : #FFFF13 ; }
. cython . score-120 { background-color : #FFFF13 ; }
. cython . score-121 { background-color : #FFFF13 ; }
. cython . score-122 { background-color : #FFFF13 ; }
. cython . score-123 { background-color : #FFFF13 ; }
. cython . score-124 { background-color : #FFFF13 ; }
. cython . score-125 { background-color : #FFFF12 ; }
. cython . score-126 { background-color : #FFFF12 ; }
. cython . score-127 { background-color : #FFFF12 ; }
. cython . score-128 { background-color : #FFFF12 ; }
. cython . score-129 { background-color : #FFFF12 ; }
. cython . score-130 { background-color : #FFFF12 ; }
. cython . score-131 { background-color : #FFFF12 ; }
. cython . score-132 { background-color : #FFFF11 ; }
. cython . score-133 { background-color : #FFFF11 ; }
. cython . score-134 { background-color : #FFFF11 ; }
. cython . score-135 { background-color : #FFFF11 ; }
. cython . score-136 { background-color : #FFFF11 ; }
. cython . score-137 { background-color : #FFFF11 ; }
. cython . score-138 { background-color : #FFFF11 ; }
. cython . score-139 { background-color : #FFFF11 ; }
. cython . score-140 { background-color : #FFFF11 ; }
. cython . score-141 { background-color : #FFFF10 ; }
. cython . score-142 { background-color : #FFFF10 ; }
. cython . score-143 { background-color : #FFFF10 ; }
. cython . score-144 { background-color : #FFFF10 ; }
. cython . score-145 { background-color : #FFFF10 ; }
. cython . score-146 { background-color : #FFFF10 ; }
. cython . score-147 { background-color : #FFFF10 ; }
. cython . score-148 { background-color : #FFFF10 ; }
. cython . score-149 { background-color : #FFFF10 ; }
. cython . score-150 { background-color : #FFFF0f ; }
. cython . score-151 { background-color : #FFFF0f ; }
. cython . score-152 { background-color : #FFFF0f ; }
. cython . score-153 { background-color : #FFFF0f ; }
. cython . score-154 { background-color : #FFFF0f ; }
. cython . score-155 { background-color : #FFFF0f ; }
. cython . score-156 { background-color : #FFFF0f ; }
. cython . score-157 { background-color : #FFFF0f ; }
. cython . score-158 { background-color : #FFFF0f ; }
. cython . score-159 { background-color : #FFFF0f ; }
. cython . score-160 { background-color : #FFFF0f ; }
. cython . score-161 { background-color : #FFFF0e ; }
. cython . score-162 { background-color : #FFFF0e ; }
. cython . score-163 { background-color : #FFFF0e ; }
. cython . score-164 { background-color : #FFFF0e ; }
. cython . score-165 { background-color : #FFFF0e ; }
. cython . score-166 { background-color : #FFFF0e ; }
. cython . score-167 { background-color : #FFFF0e ; }
. cython . score-168 { background-color : #FFFF0e ; }
. cython . score-169 { background-color : #FFFF0e ; }
. cython . score-170 { background-color : #FFFF0e ; }
. cython . score-171 { background-color : #FFFF0e ; }
. cython . score-172 { background-color : #FFFF0e ; }
. cython . score-173 { background-color : #FFFF0d ; }
. cython . score-174 { background-color : #FFFF0d ; }
. cython . score-175 { background-color : #FFFF0d ; }
. cython . score-176 { background-color : #FFFF0d ; }
. cython . score-177 { background-color : #FFFF0d ; }
. cython . score-178 { background-color : #FFFF0d ; }
. cython . score-179 { background-color : #FFFF0d ; }
. cython . score-180 { background-color : #FFFF0d ; }
. cython . score-181 { background-color : #FFFF0d ; }
. cython . score-182 { background-color : #FFFF0d ; }
. cython . score-183 { background-color : #FFFF0d ; }
. cython . score-184 { background-color : #FFFF0d ; }
. cython . score-185 { background-color : #FFFF0d ; }
. cython . score-186 { background-color : #FFFF0d ; }
. cython . score-187 { background-color : #FFFF0c ; }
. cython . score-188 { background-color : #FFFF0c ; }
. cython . score-189 { background-color : #FFFF0c ; }
. cython . score-190 { background-color : #FFFF0c ; }
. cython . score-191 { background-color : #FFFF0c ; }
. cython . score-192 { background-color : #FFFF0c ; }
. cython . score-193 { background-color : #FFFF0c ; }
. cython . score-194 { background-color : #FFFF0c ; }
. cython . score-195 { background-color : #FFFF0c ; }
. cython . score-196 { background-color : #FFFF0c ; }
. cython . score-197 { background-color : #FFFF0c ; }
. cython . score-198 { background-color : #FFFF0c ; }
. cython . score-199 { background-color : #FFFF0c ; }
. cython . score-200 { background-color : #FFFF0c ; }
. cython . score-201 { background-color : #FFFF0c ; }
. cython . score-202 { background-color : #FFFF0c ; }
. cython . score-203 { background-color : #FFFF0b ; }
. cython . score-204 { background-color : #FFFF0b ; }
. cython . score-205 { background-color : #FFFF0b ; }
. cython . score-206 { background-color : #FFFF0b ; }
. cython . score-207 { background-color : #FFFF0b ; }
. cython . score-208 { background-color : #FFFF0b ; }
. cython . score-209 { background-color : #FFFF0b ; }
. cython . score-210 { background-color : #FFFF0b ; }
. cython . score-211 { background-color : #FFFF0b ; }
. cython . score-212 { background-color : #FFFF0b ; }
. cython . score-213 { background-color : #FFFF0b ; }
. cython . score-214 { background-color : #FFFF0b ; }
. cython . score-215 { background-color : #FFFF0b ; }
. cython . score-216 { background-color : #FFFF0b ; }
. cython . score-217 { background-color : #FFFF0b ; }
. cython . score-218 { background-color : #FFFF0b ; }
. cython . score-219 { background-color : #FFFF0b ; }
. cython . score-220 { background-color : #FFFF0b ; }
. cython . score-221 { background-color : #FFFF0b ; }
. cython . score-222 { background-color : #FFFF0a ; }
. cython . score-223 { background-color : #FFFF0a ; }
. cython . score-224 { background-color : #FFFF0a ; }
. cython . score-225 { background-color : #FFFF0a ; }
. cython . score-226 { background-color : #FFFF0a ; }
. cython . score-227 { background-color : #FFFF0a ; }
. cython . score-228 { background-color : #FFFF0a ; }
. cython . score-229 { background-color : #FFFF0a ; }
. cython . score-230 { background-color : #FFFF0a ; }
. cython . score-231 { background-color : #FFFF0a ; }
. cython . score-232 { background-color : #FFFF0a ; }
. cython . score-233 { background-color : #FFFF0a ; }
. cython . score-234 { background-color : #FFFF0a ; }
. cython . score-235 { background-color : #FFFF0a ; }
. cython . score-236 { background-color : #FFFF0a ; }
. cython . score-237 { background-color : #FFFF0a ; }
. cython . score-238 { background-color : #FFFF0a ; }
. cython . score-239 { background-color : #FFFF0a ; }
. cython . score-240 { background-color : #FFFF0a ; }
. cython . score-241 { background-color : #FFFF0a ; }
. cython . score-242 { background-color : #FFFF0a ; }
. cython . score-243 { background-color : #FFFF0a ; }
. cython . score-244 { background-color : #FFFF0a ; }
. cython . score-245 { background-color : #FFFF0a ; }
. cython . score-246 { background-color : #FFFF09 ; }
. cython . score-247 { background-color : #FFFF09 ; }
. cython . score-248 { background-color : #FFFF09 ; }
. cython . score-249 { background-color : #FFFF09 ; }
. cython . score-250 { background-color : #FFFF09 ; }
. cython . score-251 { background-color : #FFFF09 ; }
. cython . score-252 { background-color : #FFFF09 ; }
. cython . score-253 { background-color : #FFFF09 ; }
. cython . score-254 { background-color : #FFFF09 ; }
. cython . hll { background-color : #ffffcc }
. cython { background : #f8f8f8 ; }
. cython . c { color : #408080 ; font-style : italic } /* Comment */
. cython . err { border : 1 px solid #FF0000 } /* Error */
. cython . k { color : #008000 ; font-weight : bold } /* Keyword */
. cython . o { color : #666666 } /* Operator */
. cython . ch { color : #408080 ; font-style : italic } /* Comment.Hashbang */
. cython . cm { color : #408080 ; font-style : italic } /* Comment.Multiline */
. cython . cp { color : #BC7A00 } /* Comment.Preproc */
. cython . cpf { color : #408080 ; font-style : italic } /* Comment.PreprocFile */
. cython . c1 { color : #408080 ; font-style : italic } /* Comment.Single */
. cython . cs { color : #408080 ; font-style : italic } /* Comment.Special */
. cython . gd { color : #A00000 } /* Generic.Deleted */
. cython . ge { font-style : italic } /* Generic.Emph */
. cython . gr { color : #FF0000 } /* Generic.Error */
. cython . gh { color : #000080 ; font-weight : bold } /* Generic.Heading */
. cython . gi { color : #00A000 } /* Generic.Inserted */
. cython . go { color : #888888 } /* Generic.Output */
. cython . gp { color : #000080 ; font-weight : bold } /* Generic.Prompt */
. cython . gs { font-weight : bold } /* Generic.Strong */
. cython . gu { color : #800080 ; font-weight : bold } /* Generic.Subheading */
. cython . gt { color : #0044DD } /* Generic.Traceback */
. cython . kc { color : #008000 ; font-weight : bold } /* Keyword.Constant */
. cython . kd { color : #008000 ; font-weight : bold } /* Keyword.Declaration */
. cython . kn { color : #008000 ; font-weight : bold } /* Keyword.Namespace */
. cython . kp { color : #008000 } /* Keyword.Pseudo */
. cython . kr { color : #008000 ; font-weight : bold } /* Keyword.Reserved */
. cython . kt { color : #B00040 } /* Keyword.Type */
. cython . m { color : #666666 } /* Literal.Number */
. cython . s { color : #BA2121 } /* Literal.String */
. cython . na { color : #7D9029 } /* Name.Attribute */
. cython . nb { color : #008000 } /* Name.Builtin */
. cython . nc { color : #0000FF ; font-weight : bold } /* Name.Class */
. cython . no { color : #880000 } /* Name.Constant */
. cython . nd { color : #AA22FF } /* Name.Decorator */
. cython . ni { color : #999999 ; font-weight : bold } /* Name.Entity */
. cython . ne { color : #D2413A ; font-weight : bold } /* Name.Exception */
. cython . nf { color : #0000FF } /* Name.Function */
. cython . nl { color : #A0A000 } /* Name.Label */
. cython . nn { color : #0000FF ; font-weight : bold } /* Name.Namespace */
. cython . nt { color : #008000 ; font-weight : bold } /* Name.Tag */
. cython . nv { color : #19177C } /* Name.Variable */
. cython . ow { color : #AA22FF ; font-weight : bold } /* Operator.Word */
. cython . w { color : #bbbbbb } /* Text.Whitespace */
. cython . mb { color : #666666 } /* Literal.Number.Bin */
. cython . mf { color : #666666 } /* Literal.Number.Float */
. cython . mh { color : #666666 } /* Literal.Number.Hex */
. cython . mi { color : #666666 } /* Literal.Number.Integer */
. cython . mo { color : #666666 } /* Literal.Number.Oct */
. cython . sa { color : #BA2121 } /* Literal.String.Affix */
. cython . sb { color : #BA2121 } /* Literal.String.Backtick */
. cython . sc { color : #BA2121 } /* Literal.String.Char */
. cython . dl { color : #BA2121 } /* Literal.String.Delimiter */
. cython . sd { color : #BA2121 ; font-style : italic } /* Literal.String.Doc */
. cython . s2 { color : #BA2121 } /* Literal.String.Double */
. cython . se { color : #BB6622 ; font-weight : bold } /* Literal.String.Escape */
. cython . sh { color : #BA2121 } /* Literal.String.Heredoc */
. cython . si { color : #BB6688 ; font-weight : bold } /* Literal.String.Interpol */
. cython . sx { color : #008000 } /* Literal.String.Other */
. cython . sr { color : #BB6688 } /* Literal.String.Regex */
. cython . s1 { color : #BA2121 } /* Literal.String.Single */
. cython . ss { color : #19177C } /* Literal.String.Symbol */
. cython . bp { color : #008000 } /* Name.Builtin.Pseudo */
. cython . fm { color : #0000FF } /* Name.Function.Magic */
. cython . vc { color : #19177C } /* Name.Variable.Class */
. cython . vg { color : #19177C } /* Name.Variable.Global */
. cython . vi { color : #19177C } /* Name.Variable.Instance */
. cython . vm { color : #19177C } /* Name.Variable.Magic */
. cython . il { color : #666666 } /* Literal.Number.Integer.Long */
2021-11-15 16:53:30 +01:00
2019-06-13 16:25:11 +02:00
< / style >
< / head >
< body class = "cython" >
< p > < span style = "border-bottom: solid 1px grey;" > Generated by Cython 0.29< / span > < / p >
< p >
2021-11-15 16:53:30 +01:00
< span style = "background-color: #FFFF00" > Yellow lines< / span > hint at Python interaction.< br / >
2019-06-13 16:25:11 +02:00
Click on a line that starts with a "< code > +< / code > " to see the C code that Cython generated for it.
< / p >
< p > Raw output: < a href = "lcn.c" > lcn.c< / a > < / p >
2021-11-15 16:53:30 +01:00
< div class = "cython" >
< pre class = "cython line score-16"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 01< / span > : < span class = "k" > import< / span > < span class = "nn" > numpy< / span > < span
class = "k" > as< / span > < span class = "nn" > np< / span > < / pre >
< pre class = 'cython code score-16 ' > __pyx_t_1 = < span class = 'pyx_c_api' > __Pyx_Import< / span > (__pyx_n_s_numpy, 0, -1);< span
class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
if (< span class = 'py_c_api' > PyDict_SetItem< / span > (__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) < span class = 'error_goto' > __PYX_ERR(0, 1, __pyx_L1_error)< / span >
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_1); __pyx_t_1 = 0;
/* … */
__pyx_t_1 = < span class = 'pyx_c_api' > __Pyx_PyDict_NewPresized< / span > (0);< span class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
if (< span class = 'py_c_api' > PyDict_SetItem< / span > (__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) < span class = 'error_goto' > __PYX_ERR(0, 1, __pyx_L1_error)< / span >
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_1); __pyx_t_1 = 0;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 02< / span > : < span class = "k" > cimport< / span > < span class = "nn" > cython< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 03< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 04< / span > : < span class = "c" > # use c square root function< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 05< / span > : < span class = "k" > cdef< / span > < span
class = "kr" > extern< / span > < span class = "k" > from< / span > < span class = "s" > " math.h" < / span > < span
class = "p" > :< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 06< / span > : < span class = "nb" > float< / span > < span class = "n" > sqrt< / span > < span
class = "p" > (< / span > < span class = "nb" > float< / span > < span class = "n" > x< / span > < span class = "p" > )< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 07< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 08< / span > : < span class = "nd" > @cython< / span > < span
class = "o" > .< / span > < span class = "n" > boundscheck< / span > < span class = "p" > (< / span > < span
class = "bp" > False< / span > < span class = "p" > )< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 09< / span > : < span class = "nd" > @cython< / span > < span
class = "o" > .< / span > < span class = "n" > wraparound< / span > < span class = "p" > (< / span > < span
class = "bp" > False< / span > < span class = "p" > )< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 10< / span > : < span class = "nd" > @cython< / span > < span
class = "o" > .< / span > < span class = "n" > cdivision< / span > < span class = "p" > (< / span > < span class = "bp" > True< / span > < span
class = "p" > )< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 11< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 12< / span > : < span class = "c" > # 3 parameters:< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 13< / span > : < span class = "c" > # - float image< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 14< / span > : < span class = "c" > # - kernel size (actually this is the radius, kernel is 2*k+1)< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 15< / span > : < span class = "c" > # - small constant epsilon that is used to avoid division by zero< / span > < / pre >
< pre class = "cython line score-67"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 16< / span > : < span class = "k" > def< / span > < span class = "nf" > normalize< / span > < span
class = "p" > (< / span > < span class = "nb" > float< / span > < span class = "p" > [:,< / span > < span class = "p" > :]< / span > < span
class = "n" > img< / span > < span class = "p" > ,< / span > < span class = "nb" > int< / span > < span class = "n" > kernel_size< / span > < span
class = "o" > =< / span > < span class = "mf" > 4< / span > < span class = "p" > ,< / span > < span class = "nb" > float< / span > < span
class = "n" > epsilon< / span > < span class = "o" > =< / span > < span class = "mf" > 0.01< / span > < span
class = "p" > ):< / span > < / pre >
< pre class = 'cython code score-67 ' > /* Python wrapper */
2019-06-13 16:25:11 +02:00
static PyObject *__pyx_pw_3lcn_1normalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_3lcn_1normalize = {"normalize", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_3lcn_1normalize, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_3lcn_1normalize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_img = { 0, 0, { 0 }, { 0 }, { 0 } };
int __pyx_v_kernel_size;
float __pyx_v_epsilon;
PyObject *__pyx_r = 0;
< span class = 'refnanny' > __Pyx_RefNannyDeclarations< / span >
< span class = 'refnanny' > __Pyx_RefNannySetupContext< / span > ("normalize (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {& __pyx_n_s_img,& __pyx_n_s_kernel_size,& __pyx_n_s_epsilon,0};
PyObject* values[3] = {0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = < span class = 'py_macro_api' > PyTuple_GET_SIZE< / span > (__pyx_args);
switch (pos_args) {
case 3: values[2] = < span class = 'py_macro_api' > PyTuple_GET_ITEM< / span > (__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = < span class = 'py_macro_api' > PyTuple_GET_ITEM< / span > (__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = < span class = 'py_macro_api' > PyTuple_GET_ITEM< / span > (__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = < span class = 'py_c_api' > PyDict_Size< / span > (__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = < span class = 'pyx_c_api' > __Pyx_PyDict_GetItemStr< / span > (__pyx_kwds, __pyx_n_s_img)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = < span class = 'pyx_c_api' > __Pyx_PyDict_GetItemStr< / span > (__pyx_kwds, __pyx_n_s_kernel_size);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = < span class = 'pyx_c_api' > __Pyx_PyDict_GetItemStr< / span > (__pyx_kwds, __pyx_n_s_epsilon);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
2021-11-15 16:53:30 +01:00
if (unlikely(< span class = 'pyx_c_api' > __Pyx_ParseOptionalKeywords< / span > (__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "normalize") < 0)) < span
class = 'error_goto' > __PYX_ERR(0, 16, __pyx_L3_error)< / span >
2019-06-13 16:25:11 +02:00
}
} else {
switch (< span class = 'py_macro_api' > PyTuple_GET_SIZE< / span > (__pyx_args)) {
case 3: values[2] = < span class = 'py_macro_api' > PyTuple_GET_ITEM< / span > (__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = < span class = 'py_macro_api' > PyTuple_GET_ITEM< / span > (__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = < span class = 'py_macro_api' > PyTuple_GET_ITEM< / span > (__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
2021-11-15 16:53:30 +01:00
__pyx_v_img = < span class = 'pyx_c_api' > __Pyx_PyObject_to_MemoryviewSlice_dsds_float< / span > (values[0], PyBUF_WRITABLE);< span
class = 'error_goto' > if (unlikely(!__pyx_v_img.memview)) __PYX_ERR(0, 16, __pyx_L3_error)< / span >
2019-06-13 16:25:11 +02:00
if (values[1]) {
2021-11-15 16:53:30 +01:00
__pyx_v_kernel_size = < span class = 'pyx_c_api' > __Pyx_PyInt_As_int< / span > (values[1]); if (unlikely((__pyx_v_kernel_size == (int)-1) & & < span
class = 'py_c_api' > PyErr_Occurred< / span > ())) < span
class = 'error_goto' > __PYX_ERR(0, 16, __pyx_L3_error)< / span >
2019-06-13 16:25:11 +02:00
} else {
__pyx_v_kernel_size = ((int)4);
}
if (values[2]) {
2021-11-15 16:53:30 +01:00
__pyx_v_epsilon = __pyx_< span class = 'py_c_api' > PyFloat_AsFloat< / span > (values[2]); if (unlikely((__pyx_v_epsilon == (float)-1) & & < span
class = 'py_c_api' > PyErr_Occurred< / span > ())) < span
class = 'error_goto' > __PYX_ERR(0, 16, __pyx_L3_error)< / span >
2019-06-13 16:25:11 +02:00
} else {
__pyx_v_epsilon = ((float)0.01);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
2021-11-15 16:53:30 +01:00
< span class = 'pyx_c_api' > __Pyx_RaiseArgtupleInvalid< / span > ("normalize", 0, 1, 3, < span class = 'py_macro_api' > PyTuple_GET_SIZE< / span > (__pyx_args)); < span
class = 'error_goto' > __PYX_ERR(0, 16, __pyx_L3_error)< / span >
2019-06-13 16:25:11 +02:00
__pyx_L3_error:;
< span class = 'pyx_c_api' > __Pyx_AddTraceback< / span > ("lcn.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
< span class = 'refnanny' > __Pyx_RefNannyFinishContext< / span > ();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_3lcn_normalize(__pyx_self, __pyx_v_img, __pyx_v_kernel_size, __pyx_v_epsilon);
/* function exit code */
< span class = 'refnanny' > __Pyx_RefNannyFinishContext< / span > ();
return __pyx_r;
}
static PyObject *__pyx_pf_3lcn_normalize(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_img, int __pyx_v_kernel_size, float __pyx_v_epsilon) {
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_N;
PyObject *__pyx_v_img_lcn = NULL;
PyObject *__pyx_v_img_std = NULL;
__Pyx_memviewslice __pyx_v_img_lcn_view = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_img_std_view = { 0, 0, { 0 }, { 0 }, { 0 } };
float __pyx_v_mean;
float __pyx_v_stddev;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_j;
Py_ssize_t __pyx_v_ks;
float __pyx_v_eps;
float __pyx_v_num;
PyObject *__pyx_r = NULL;
< span class = 'refnanny' > __Pyx_RefNannyDeclarations< / span >
< span class = 'refnanny' > __Pyx_RefNannySetupContext< / span > ("normalize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
< span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_t_1);
< span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_t_2);
< span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_t_3);
< span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_t_4);
< span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_t_5);
__PYX_XDEC_MEMVIEW(& __pyx_t_6, 1);
< span class = 'pyx_c_api' > __Pyx_AddTraceback< / span > ("lcn.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
< span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_v_img_lcn);
< span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_v_img_std);
__PYX_XDEC_MEMVIEW(& __pyx_v_img_lcn_view, 1);
__PYX_XDEC_MEMVIEW(& __pyx_v_img_std_view, 1);
__PYX_XDEC_MEMVIEW(& __pyx_v_img, 1);
< span class = 'refnanny' > __Pyx_XGIVEREF< / span > (__pyx_r);
< span class = 'refnanny' > __Pyx_RefNannyFinishContext< / span > ();
return __pyx_r;
}
/* … */
2021-11-15 16:53:30 +01:00
__pyx_tuple__19 = < span class = 'py_c_api' > PyTuple_Pack< / span > (19, __pyx_n_s_img, __pyx_n_s_kernel_size, __pyx_n_s_epsilon, __pyx_n_s_M, __pyx_n_s_N, __pyx_n_s_img_lcn, __pyx_n_s_img_std, __pyx_n_s_img_lcn_view, __pyx_n_s_img_std_view, __pyx_n_s_tmp, __pyx_n_s_mean, __pyx_n_s_stddev, __pyx_n_s_m, __pyx_n_s_n, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_ks, __pyx_n_s_eps, __pyx_n_s_num);< span
class = 'error_goto' > if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 16, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_tuple__19);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_tuple__19);
/* … */
__pyx_t_1 = PyCFunction_NewEx(& __pyx_mdef_3lcn_1normalize, NULL, __pyx_n_s_lcn);< span class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
2021-11-15 16:53:30 +01:00
if (< span class = 'py_c_api' > PyDict_SetItem< / span > (__pyx_d, __pyx_n_s_normalize, __pyx_t_1) < 0) < span
class = 'error_goto' > __PYX_ERR(0, 16, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_1); __pyx_t_1 = 0;
2021-11-15 16:53:30 +01:00
__pyx_codeobj__20 = (PyObject*)< span class = 'pyx_c_api' > __Pyx_PyCode_New< / span > (3, 0, 19, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_lcn_pyx, __pyx_n_s_normalize, 16, __pyx_empty_bytes);< span
class = 'error_goto' > if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 16, __pyx_L1_error)< / span >
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 17< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 18< / span > : < span class = "c" > # image dimensions< / span > < / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 19< / span > : < span class = "k" > cdef< / span > < span class = "kt" > Py_ssize_t< / span > < span
class = "nf" > M< / span > < span class = "o" > =< / span > < span class = "n" > img< / span > < span class = "o" > .< / span > < span
class = "n" > shape< / span > < span class = "p" > [< / span > < span class = "mf" > 0< / span > < span class = "p" > ]< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_M = (__pyx_v_img.shape[0]);
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 20< / span > : < span class = "k" > cdef< / span > < span class = "kt" > Py_ssize_t< / span > < span
class = "nf" > N< / span > < span class = "o" > =< / span > < span class = "n" > img< / span > < span class = "o" > .< / span > < span
class = "n" > shape< / span > < span class = "p" > [< / span > < span class = "mf" > 1< / span > < span class = "p" > ]< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_N = (__pyx_v_img.shape[1]);
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 21< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 22< / span > : < span class = "c" > # create outputs and output views< / span > < / pre >
< pre class = "cython line score-46"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 23< / span > : < span class = "n" > img_lcn< / span > < span class = "o" > =< / span > < span
class = "n" > np< / span > < span class = "o" > .< / span > < span class = "n" > zeros< / span > < span class = "p" > ((< / span > < span
class = "n" > M< / span > < span class = "p" > ,< / span > < span class = "n" > N< / span > < span class = "p" > ),< / span > < span
class = "n" > dtype< / span > < span class = "o" > =< / span > < span class = "n" > np< / span > < span class = "o" > .< / span > < span
class = "n" > float32< / span > < span class = "p" > )< / span > < / pre >
< pre class = 'cython code score-46 ' > < span class = 'pyx_c_api' > __Pyx_GetModuleGlobalName< / span > (__pyx_t_1, __pyx_n_s_np);< span
class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
2021-11-15 16:53:30 +01:00
__pyx_t_2 = < span class = 'pyx_c_api' > __Pyx_PyObject_GetAttrStr< / span > (__pyx_t_1, __pyx_n_s_zeros);< span
class = 'error_goto' > if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_2);
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = < span class = 'py_c_api' > PyInt_FromSsize_t< / span > (__pyx_v_M);< span class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
__pyx_t_3 = < span class = 'py_c_api' > PyInt_FromSsize_t< / span > (__pyx_v_N);< span class = 'error_goto' > if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_3);
__pyx_t_4 = < span class = 'py_c_api' > PyTuple_New< / span > (2);< span class = 'error_goto' > if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_4);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_t_1);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_4, 0, __pyx_t_1);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_t_3);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_4, 1, __pyx_t_3);
__pyx_t_1 = 0;
__pyx_t_3 = 0;
__pyx_t_3 = < span class = 'py_c_api' > PyTuple_New< / span > (1);< span class = 'error_goto' > if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_3);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_t_4);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_3, 0, __pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_4 = < span class = 'pyx_c_api' > __Pyx_PyDict_NewPresized< / span > (1);< span class = 'error_goto' > if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_4);
< span class = 'pyx_c_api' > __Pyx_GetModuleGlobalName< / span > (__pyx_t_1, __pyx_n_s_np);< span class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
2021-11-15 16:53:30 +01:00
__pyx_t_5 = < span class = 'pyx_c_api' > __Pyx_PyObject_GetAttrStr< / span > (__pyx_t_1, __pyx_n_s_float32);< span
class = 'error_goto' > if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_5);
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_1); __pyx_t_1 = 0;
2021-11-15 16:53:30 +01:00
if (< span class = 'py_c_api' > PyDict_SetItem< / span > (__pyx_t_4, __pyx_n_s_dtype, __pyx_t_5) < 0) < span
class = 'error_goto' > __PYX_ERR(0, 23, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_5); __pyx_t_5 = 0;
2021-11-15 16:53:30 +01:00
__pyx_t_5 = < span class = 'pyx_c_api' > __Pyx_PyObject_Call< / span > (__pyx_t_2, __pyx_t_3, __pyx_t_4);< span
class = 'error_goto' > if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 23, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_5);
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_2); __pyx_t_2 = 0;
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_3); __pyx_t_3 = 0;
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_img_lcn = __pyx_t_5;
__pyx_t_5 = 0;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-46"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 24< / span > : < span class = "n" > img_std< / span > < span class = "o" > =< / span > < span
class = "n" > np< / span > < span class = "o" > .< / span > < span class = "n" > zeros< / span > < span class = "p" > ((< / span > < span
class = "n" > M< / span > < span class = "p" > ,< / span > < span class = "n" > N< / span > < span class = "p" > ),< / span > < span
class = "n" > dtype< / span > < span class = "o" > =< / span > < span class = "n" > np< / span > < span class = "o" > .< / span > < span
class = "n" > float32< / span > < span class = "p" > )< / span > < / pre >
< pre class = 'cython code score-46 ' > < span class = 'pyx_c_api' > __Pyx_GetModuleGlobalName< / span > (__pyx_t_5, __pyx_n_s_np);< span
class = 'error_goto' > if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_5);
2021-11-15 16:53:30 +01:00
__pyx_t_4 = < span class = 'pyx_c_api' > __Pyx_PyObject_GetAttrStr< / span > (__pyx_t_5, __pyx_n_s_zeros);< span
class = 'error_goto' > if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_4);
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = < span class = 'py_c_api' > PyInt_FromSsize_t< / span > (__pyx_v_M);< span class = 'error_goto' > if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_5);
__pyx_t_3 = < span class = 'py_c_api' > PyInt_FromSsize_t< / span > (__pyx_v_N);< span class = 'error_goto' > if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_3);
__pyx_t_2 = < span class = 'py_c_api' > PyTuple_New< / span > (2);< span class = 'error_goto' > if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_2);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_t_5);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_2, 0, __pyx_t_5);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_t_3);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_2, 1, __pyx_t_3);
__pyx_t_5 = 0;
__pyx_t_3 = 0;
__pyx_t_3 = < span class = 'py_c_api' > PyTuple_New< / span > (1);< span class = 'error_goto' > if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_3);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_t_2);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_3, 0, __pyx_t_2);
__pyx_t_2 = 0;
__pyx_t_2 = < span class = 'pyx_c_api' > __Pyx_PyDict_NewPresized< / span > (1);< span class = 'error_goto' > if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_2);
< span class = 'pyx_c_api' > __Pyx_GetModuleGlobalName< / span > (__pyx_t_5, __pyx_n_s_np);< span class = 'error_goto' > if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_5);
2021-11-15 16:53:30 +01:00
__pyx_t_1 = < span class = 'pyx_c_api' > __Pyx_PyObject_GetAttrStr< / span > (__pyx_t_5, __pyx_n_s_float32);< span
class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_5); __pyx_t_5 = 0;
2021-11-15 16:53:30 +01:00
if (< span class = 'py_c_api' > PyDict_SetItem< / span > (__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) < span
class = 'error_goto' > __PYX_ERR(0, 24, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_1); __pyx_t_1 = 0;
2021-11-15 16:53:30 +01:00
__pyx_t_1 = < span class = 'pyx_c_api' > __Pyx_PyObject_Call< / span > (__pyx_t_4, __pyx_t_3, __pyx_t_2);< span
class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_4); __pyx_t_4 = 0;
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_3); __pyx_t_3 = 0;
< span class = 'pyx_macro_api' > __Pyx_DECREF< / span > (__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_img_std = __pyx_t_1;
__pyx_t_1 = 0;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-2"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 25< / span > : < span class = "k" > cdef< / span > < span class = "kt" > float< / span > [< span class = "p" > :,< / span > < span
class = "p" > :]< / span > < span class = "n" > img_lcn_view< / span > < span class = "o" > =< / span > < span
class = "n" > img_lcn< / span > < / pre >
< pre class = 'cython code score-2 ' > __pyx_t_6 = < span
class = 'pyx_c_api' > __Pyx_PyObject_to_MemoryviewSlice_dsds_float< / span > (__pyx_v_img_lcn, PyBUF_WRITABLE);< span
class = 'error_goto' > if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 25, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
__pyx_v_img_lcn_view = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-2"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 26< / span > : < span class = "k" > cdef< / span > < span class = "kt" > float< / span > [< span class = "p" > :,< / span > < span
class = "p" > :]< / span > < span class = "n" > img_std_view< / span > < span class = "o" > =< / span > < span
class = "n" > img_std< / span > < / pre >
< pre class = 'cython code score-2 ' > __pyx_t_6 = < span
class = 'pyx_c_api' > __Pyx_PyObject_to_MemoryviewSlice_dsds_float< / span > (__pyx_v_img_std, PyBUF_WRITABLE);< span
class = 'error_goto' > if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 26, __pyx_L1_error)< / span >
2019-06-13 16:25:11 +02:00
__pyx_v_img_std_view = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 27< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 28< / span > : < span class = "c" > # temporary c variables< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 29< / span > : < span class = "k" > cdef< / span > < span class = "kt" > float< / span > < span
class = "nf" > tmp< / span > < span class = "p" > ,< / span > < span class = "nf" > mean< / span > < span class = "p" > ,< / span > < span
class = "nf" > stddev< / span > < / pre >
< pre class = "cython line score-0" >   < span class = "" > 30< / span > : < span class = "k" > cdef< / span > < span class = "kt" > Py_ssize_t< / span > < span
class = "nf" > m< / span > < span class = "p" > ,< / span > < span class = "nf" > n< / span > < span class = "p" > ,< / span > < span
class = "nf" > i< / span > < span class = "p" > ,< / span > < span class = "nf" > j< / span > < / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 31< / span > : < span class = "k" > cdef< / span > < span class = "kt" > Py_ssize_t< / span > < span
class = "nf" > ks< / span > < span class = "o" > =< / span > < span class = "n" > kernel_size< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_ks = __pyx_v_kernel_size;
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 32< / span > : < span class = "k" > cdef< / span > < span class = "kt" > float< / span > < span
class = "nf" > eps< / span > < span class = "o" > =< / span > < span class = "n" > epsilon< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_eps = __pyx_v_epsilon;
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 33< / span > : < span class = "k" > cdef< / span > < span class = "kt" > float< / span > < span
class = "nf" > num< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > ks< / span > < span
class = "o" > *< / span > < span class = "mf" > 2< / span > < span class = "o" > +< / span > < span class = "mf" > 1< / span > < span class = "p" > )< / span > < span
class = "o" > **< / span > < span class = "mf" > 2< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_num = __Pyx_pow_Py_ssize_t(((__pyx_v_ks * 2) + 1), 2);
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 34< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 35< / span > : < span
class = "c" > # for all pixels do< / span > < / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 36< / span > : < span class = "k" > for< / span > < span class = "n" > m< / span > < span class = "ow" > in< / span > < span
class = "nb" > range< / span > < span class = "p" > (< / span > < span class = "n" > ks< / span > < span class = "p" > ,< / span > < span
class = "n" > M< / span > < span class = "o" > -< / span > < span class = "n" > ks< / span > < span class = "p" > ):< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_7 = (__pyx_v_M - __pyx_v_ks);
2019-06-13 16:25:11 +02:00
__pyx_t_8 = __pyx_t_7;
for (__pyx_t_9 = __pyx_v_ks; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_m = __pyx_t_9;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 37< / span > : < span class = "k" > for< / span > < span class = "n" > n< / span > < span
class = "ow" > in< / span > < span class = "nb" > range< / span > < span class = "p" > (< / span > < span class = "n" > ks< / span > < span
class = "p" > ,< / span > < span class = "n" > N< / span > < span class = "o" > -< / span > < span class = "n" > ks< / span > < span class = "p" > ):< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_10 = (__pyx_v_N - __pyx_v_ks);
2019-06-13 16:25:11 +02:00
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = __pyx_v_ks; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_n = __pyx_t_12;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 38< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 39< / span > : < span class = "c" > # calculate mean< / span > < / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 40< / span > : < span class = "n" > mean< / span > < span class = "o" > =< / span > < span
class = "mf" > 0< / span > < span class = "p" > ;< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_mean = 0.0;
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 41< / span > : < span class = "k" > for< / span > < span class = "n" > i< / span > < span
class = "ow" > in< / span > < span class = "nb" > range< / span > < span class = "p" > (< / span > < span class = "o" > -< / span > < span
class = "n" > ks< / span > < span class = "p" > ,< / span > < span class = "n" > ks< / span > < span class = "o" > +< / span > < span
class = "mf" > 1< / span > < span class = "p" > ):< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_13 = (__pyx_v_ks + 1);
2019-06-13 16:25:11 +02:00
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = (-__pyx_v_ks); __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 42< / span > : < span class = "k" > for< / span > < span class = "n" > j< / span > < span
class = "ow" > in< / span > < span class = "nb" > range< / span > < span class = "p" > (< / span > < span class = "o" > -< / span > < span
class = "n" > ks< / span > < span class = "p" > ,< / span > < span class = "n" > ks< / span > < span class = "o" > +< / span > < span
class = "mf" > 1< / span > < span class = "p" > ):< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_16 = (__pyx_v_ks + 1);
2019-06-13 16:25:11 +02:00
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = (-__pyx_v_ks); __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_j = __pyx_t_18;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 43< / span > : < span class = "n" > mean< / span > < span class = "o" > +=< / span > < span
class = "n" > img< / span > < span class = "p" > [< / span > < span class = "n" > m< / span > < span class = "o" > +< / span > < span class = "n" > i< / span > < span
class = "p" > ,< / span > < span class = "n" > n< / span > < span class = "o" > +< / span > < span class = "n" > j< / span > < span
class = "p" > ]< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_19 = (__pyx_v_m + __pyx_v_i);
2019-06-13 16:25:11 +02:00
__pyx_t_20 = (__pyx_v_n + __pyx_v_j);
__pyx_v_mean = (__pyx_v_mean + (*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img.data + __pyx_t_19 * __pyx_v_img.strides[0]) ) + __pyx_t_20 * __pyx_v_img.strides[1]) ))));
}
}
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 44< / span > : < span class = "n" > mean< / span > < span class = "o" > =< / span > < span
class = "n" > mean< / span > < span class = "o" > /< / span > < span class = "n" > num< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_mean = (__pyx_v_mean / __pyx_v_num);
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 45< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 46< / span > : < span
class = "c" > # calculate std dev< / span > < / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 47< / span > : < span class = "n" > stddev< / span > < span class = "o" > =< / span > < span
class = "mf" > 0< / span > < span class = "p" > ;< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_stddev = 0.0;
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 48< / span > : < span class = "k" > for< / span > < span class = "n" > i< / span > < span
class = "ow" > in< / span > < span class = "nb" > range< / span > < span class = "p" > (< / span > < span class = "o" > -< / span > < span
class = "n" > ks< / span > < span class = "p" > ,< / span > < span class = "n" > ks< / span > < span class = "o" > +< / span > < span
class = "mf" > 1< / span > < span class = "p" > ):< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_13 = (__pyx_v_ks + 1);
2019-06-13 16:25:11 +02:00
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = (-__pyx_v_ks); __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 49< / span > : < span class = "k" > for< / span > < span class = "n" > j< / span > < span
class = "ow" > in< / span > < span class = "nb" > range< / span > < span class = "p" > (< / span > < span class = "o" > -< / span > < span
class = "n" > ks< / span > < span class = "p" > ,< / span > < span class = "n" > ks< / span > < span class = "o" > +< / span > < span
class = "mf" > 1< / span > < span class = "p" > ):< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_16 = (__pyx_v_ks + 1);
2019-06-13 16:25:11 +02:00
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = (-__pyx_v_ks); __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_j = __pyx_t_18;
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 50< / span > : < span class = "n" > stddev< / span > < span class = "o" > =< / span > < span
class = "n" > stddev< / span > < span class = "o" > +< / span > < span class = "p" > (< / span > < span class = "n" > img< / span > < span
class = "p" > [< / span > < span class = "n" > m< / span > < span class = "o" > +< / span > < span class = "n" > i< / span > < span
class = "p" > ,< / span > < span class = "n" > n< / span > < span class = "o" > +< / span > < span class = "n" > j< / span > < span
class = "p" > ]< / span > < span class = "o" > -< / span > < span class = "n" > mean< / span > < span class = "p" > )< / span > < span
class = "o" > *< / span > < span class = "p" > (< / span > < span class = "n" > img< / span > < span class = "p" > [< / span > < span class = "n" > m< / span > < span
class = "o" > +< / span > < span class = "n" > i< / span > < span class = "p" > ,< / span > < span class = "n" > n< / span > < span
class = "o" > +< / span > < span class = "n" > j< / span > < span class = "p" > ]< / span > < span class = "o" > -< / span > < span class = "n" > mean< / span > < span
class = "p" > )< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_21 = (__pyx_v_m + __pyx_v_i);
2019-06-13 16:25:11 +02:00
__pyx_t_22 = (__pyx_v_n + __pyx_v_j);
__pyx_t_23 = (__pyx_v_m + __pyx_v_i);
__pyx_t_24 = (__pyx_v_n + __pyx_v_j);
__pyx_v_stddev = (__pyx_v_stddev + (((*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img.data + __pyx_t_21 * __pyx_v_img.strides[0]) ) + __pyx_t_22 * __pyx_v_img.strides[1]) ))) - __pyx_v_mean) * ((*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img.data + __pyx_t_23 * __pyx_v_img.strides[0]) ) + __pyx_t_24 * __pyx_v_img.strides[1]) ))) - __pyx_v_mean)));
}
}
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 51< / span > : < span class = "n" > stddev< / span > < span class = "o" > =< / span > < span
class = "n" > sqrt< / span > < span class = "p" > (< / span > < span class = "n" > stddev< / span > < span class = "o" > /< / span > < span
class = "n" > num< / span > < span class = "p" > )< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_v_stddev = sqrt((__pyx_v_stddev / __pyx_v_num));
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 52< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 53< / span > : < span class = "c" > # compute normalized image (add epsilon) and std dev image< / span > < / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 54< / span > : < span class = "n" > img_lcn_view< / span > < span class = "p" > [< / span > < span
class = "n" > m< / span > < span class = "p" > ,< / span > < span class = "n" > n< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span
class = "p" > (< / span > < span class = "n" > img< / span > < span class = "p" > [< / span > < span class = "n" > m< / span > < span class = "p" > ,< / span > < span
class = "n" > n< / span > < span class = "p" > ]< / span > < span class = "o" > -< / span > < span class = "n" > mean< / span > < span
class = "p" > )< / span > < span class = "o" > /< / span > < span class = "p" > (< / span > < span class = "n" > stddev< / span > < span
class = "o" > +< / span > < span class = "n" > eps< / span > < span class = "p" > )< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_25 = __pyx_v_m;
2019-06-13 16:25:11 +02:00
__pyx_t_26 = __pyx_v_n;
__pyx_t_27 = __pyx_v_m;
__pyx_t_28 = __pyx_v_n;
*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img_lcn_view.data + __pyx_t_27 * __pyx_v_img_lcn_view.strides[0]) ) + __pyx_t_28 * __pyx_v_img_lcn_view.strides[1]) )) = (((*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img.data + __pyx_t_25 * __pyx_v_img.strides[0]) ) + __pyx_t_26 * __pyx_v_img.strides[1]) ))) - __pyx_v_mean) / (__pyx_v_stddev + __pyx_v_eps));
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 55< / span > : < span class = "n" > img_std_view< / span > < span class = "p" > [< / span > < span
class = "n" > m< / span > < span class = "p" > ,< / span > < span class = "n" > n< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span
class = "n" > stddev< / span > < / pre >
< pre class = 'cython code score-0 ' > __pyx_t_29 = __pyx_v_m;
2019-06-13 16:25:11 +02:00
__pyx_t_30 = __pyx_v_n;
*((float *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_img_std_view.data + __pyx_t_29 * __pyx_v_img_std_view.strides[0]) ) + __pyx_t_30 * __pyx_v_img_std_view.strides[1]) )) = __pyx_v_stddev;
}
}
2021-11-15 16:53:30 +01:00
< / pre >
< pre class = "cython line score-0" >   < span class = "" > 56< / span > : < / pre >
< pre class = "cython line score-0" >   < span class = "" > 57< / span > : < span class = "c" > # return both< / span > < / pre >
< pre class = "cython line score-10"
onclick = "(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)" > +< span
class = "" > 58< / span > : < span class = "k" > return< / span > < span class = "n" > img_lcn< / span > < span class = "p" > ,< / span > < span
class = "n" > img_std< / span > < / pre >
< pre class = 'cython code score-10 ' > < span class = 'pyx_macro_api' > __Pyx_XDECREF< / span > (__pyx_r);
2019-06-13 16:25:11 +02:00
__pyx_t_1 = < span class = 'py_c_api' > PyTuple_New< / span > (2);< span class = 'error_goto' > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 58, __pyx_L1_error)< / span >
< span class = 'refnanny' > __Pyx_GOTREF< / span > (__pyx_t_1);
< span class = 'pyx_macro_api' > __Pyx_INCREF< / span > (__pyx_v_img_lcn);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_v_img_lcn);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_1, 0, __pyx_v_img_lcn);
< span class = 'pyx_macro_api' > __Pyx_INCREF< / span > (__pyx_v_img_std);
< span class = 'refnanny' > __Pyx_GIVEREF< / span > (__pyx_v_img_std);
< span class = 'py_macro_api' > PyTuple_SET_ITEM< / span > (__pyx_t_1, 1, __pyx_v_img_std);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
2021-11-15 16:53:30 +01:00
< / pre >
< / div >
< / body >
< / html >