Sample

Dorn/cuda/68

Human rating uses the original dataset scale.

DatasetDorn
Human3.38
Lines30

Scores

MethodScoreScaleDataset rank
(0–100)
Posnett00–1; higher is more readable
29.8Δ 24.8
Scalabrino0.3040–1; higher is more readable
21.7Δ 32.9
Dorn0.4140–1; higher is more readable
33.1Δ 21.4
Mi0.2590–1; higher is more readable
25.1Δ 29.5
LLOC15Logical lines; fewer is more readable
46.5Δ 8.1
DeepSeek V4 Pro110–20; mean of three runs
46.4Δ 8.2
GPT-6.1 Sol14.670–20; mean of three runs
47.1Δ 7.5
BTTF0.3360–1; higher is more readable
18.1Δ 36.5
Human3.381–5; original rating
54.6

Views

Download official ZIP ↗

Select the downloaded ZIP or its extracted folder. Files stay in your browser.

Loading feature diagnosis…

Source regions

Feature contributions

Feature contributions

FeatureValueContribution
(log-odds)
Halstead volumeHow much symbolic information the code contains. It combines the total number of operators and values with the number of distinct ones.1126.807−37.185
Source linesThe number of non-empty source lines.30+12
Byte entropyHow varied the bytes in the source text are. Repeated bytes give a lower value; a more even mixture gives a higher value.4.636−6.954

Intercept 8.87 + feature contributions = -23.268 (log-odds).
Score = sigmoid(-23.268) = 0.

Score0.304

Feature contributions

FeatureValueContribution
(log-odds)
Identifier layout (horizontal)How rapidly the visual pattern of identifier characters changes from left to right. It measures spatial frequency, not the meaning of the names.125.968−1.67
Comment layout (horizontal)How rapidly the visual pattern of comment characters changes from left to right.125.968+1.228
Number layout frequencyHow rapidly the number of numeric values per line changes through the code.24−0.13
Indentation frequencyHow rapidly indentation changes from line to line.24+0.093
Operator visual areaThe share of the code’s visual area occupied by operators such as +, =, and *.0.089+0.081
Comment layout frequencyHow frequently the layout switches between lines containing only comments or whitespace and lines containing code.30−0.026
Identifier layout (vertical)How rapidly the visual pattern of identifier characters changes from top to bottom.29.811+0.007

Intercept 0.07 + feature contributions = -0.347 (log-odds).
Score = sigmoid(-0.347) = 0.414.

Score0.259
Score15
Run 1

The code has a clear top-level structure with a descriptive comment and logical separation of setup, memory allocation, and convolution calls. However, readability is hampered by formatting inconsistencies, single-letter variable prefixes that are not explained, and poor indentation inside the for loop. Variable names like `d_data`, `d_result`, and `d_Buffer` are slightly cryptic without context. The code uses multiple operations per line (pointer arithmetic and assignment), reducing action granularity. The loop body is not indented consistently, making the block harder to scan. There is also a long comment line and a FIXME that interrupts flow. Overall, the code is functional and mostly organized, but could benefit from clearer naming, consistent formatting, and more granular action separation. It sits at a moderate readability level—readable with effort but not immediately scannable.

Run 2

The code shows reasonable organization with clear sections and comments, but has some readability issues. The structure is logical, separating setup from the main loop. Nesting is flat, which is good. Intent is mostly clear—performing 2D separable convolution on GPU—but the single-letter variable names like `d_Data`, `d_Buffer`, etc. reduce clarity. The code is concise, but variable declarations at the top with uninitialized pointers (d_Data, d_Kernel_separated, d_Result, d_Buffer) make it harder to track where values are assigned. Action granularity is generally good, though multiple actions occur in the loop's first three assignment lines. Reading flow is disrupted by inconsistent indentation and the loop opening brace placement. The use of magic numbers (like `2 * kernel_size[0]`) and unexplained `cutilSafeCall` reduces comprehension. Overall, the code is moderately readable but would benefit from better variable naming, consistent formatting, and clearer separation of setup from computation.

Run 3

The code shows some structural organization with clear section comments and logical variable declarations, but exhibits several readability issues. The function name is excessively long and unclear about its exact purpose. Variables use inconsistent naming conventions (mixed camelCase and snake_case) which hurts reading flow. The loop body has inconsistent indentation and the comments interrupt the natural reading flow. Several lines attempt to do too much at once, such as the kernel pointer calculation combining multiple operations. The convolution function calls are reasonably named but their parameters are passed in an inconsistent order (d_Buffer,d_Data vs d_Result,d_Buffer). Magic numbers like '2' in the kernel pointer calculation lack explanation. The code has some dead weight with unnecessary comments that state the obvious while missing documentation for complex calculations. The lack of error handling after cudaMalloc and the incomplete function (missing closing braces and return) further reduce clarity.

Run 1

Code Structure: Logically organized into dimension setup, buffer allocation, and per-slice convolution, although the excerpt lacks closing braces, cleanup, and a return. Nesting: Only one loop, keeping complexity low. Clarity of intent: The function name, comments, and row/column convolution calls clearly communicate the purpose; pointer indirection and inconsistent naming slightly obscure details. Code length: Concise overall, though the oversized banner and unused status variable add clutter. Action granularity: Most lines perform one action, making operations easy to distinguish; the grouped pointer declaration is slightly less clear. Reading flow: Setup naturally leads to slice pointer calculations and convolution calls, but inconsistent indentation, spacing, and capitalization reduce visual consistency. The incomplete ending also interrupts the flow.

Run 2

Code Structure: Initialization, buffer allocation, and per-slice processing are logically grouped, but the snippet ends without closing braces, cleanup, or a return. Nesting: A single loop keeps nesting shallow. Clarity of intent: The function name, comments, and row/column convolution calls convey the purpose, although abbreviated names, pointer-to-pointer parameters, and unexplained dimension indexing require interpretation. Code length: Compact and mostly purposeful; the decorative header and unused status variable add minor clutter. Action granularity: Most lines perform one action, though several pointers share a declaration. Reading flow: Processing follows a natural sequence from dimensions to allocation to slice setup and convolution, but inconsistent spacing, indentation, and naming reduce polish.

Run 3

Code Structure: Logically groups dimensions, buffer allocation, slice pointers, and convolution steps, but the excerpt ends without closing braces or cleanup. Nesting: Only one loop, making control flow easy to follow. Clarity of intent: The function name, comments, and row/column calls clearly convey separable convolution; abbreviated names, double-pointer parameters, and unexplained indexing assumptions reduce clarity. Code length: Concise overall, although unused status in the excerpt and redundant comments add minor clutter. Action granularity: Each statement performs one main action, with declarations occasionally grouping multiple variables. Reading flow: Preparation followed by per-slice processing is natural, but inconsistent spacing, capitalization, brace indentation, and the inline FIXME interrupt visual consistency.