@@ -113,26 +113,19 @@ pub const AnalysisEngine = struct {
113113 }
114114
115115 /// Run sensitivity analysis for single hyperparameter
116- pub fn analyzeParam (
117- self : * const AnalysisEngine ,
118- config : SensitivityConfig ,
119- param_range : HyperparamRange
120- ) ! SensitivityResult {
116+ pub fn analyzeParam (self : * const AnalysisEngine , config : SensitivityConfig , param_range : HyperparamRange ) ! SensitivityResult {
121117 // Allocate response surface array (owned by result, not freed here)
122118 const response = try self .allocator .alloc (f64 , param_range .n_steps );
123119
124120 // Generate values from min to max
125121 for (0.. param_range .n_steps ) | i | {
126122 const t = @as (f64 , @floatFromInt (i )) /
127- @as (f64 , @floatFromInt (param_range .n_steps - 1 ));
123+ @as (f64 , @floatFromInt (param_range .n_steps - 1 ));
128124
129125 const value = switch (param_range .scale ) {
130126 .linear = > param_range .min_value +
131- t * (param_range .max_value - param_range .min_value ),
132- .logarithmic = > param_range .min_value * std .math .pow (f64 ,
133- param_range .max_value / param_range .min_value ,
134- t
135- ),
127+ t * (param_range .max_value - param_range .min_value ),
128+ .logarithmic = > param_range .min_value * std .math .pow (f64 , param_range .max_value / param_range .min_value , t ),
136129 };
137130
138131 response [i ] = value ;
@@ -189,10 +182,7 @@ pub const AnalysisEngine = struct {
189182 }
190183
191184 /// Run full sensitivity analysis across all hyperparameters
192- pub fn analyzeAll (
193- self : * const AnalysisEngine ,
194- config : SensitivityConfig
195- ) ! SensitivitySummary {
185+ pub fn analyzeAll (self : * const AnalysisEngine , config : SensitivityConfig ) ! SensitivitySummary {
196186 // Allocate results array
197187 const results = try self .allocator .alloc (SensitivityResult , config .base_config .len );
198188 defer self .allocator .free (results );
@@ -230,10 +220,7 @@ pub const AnalysisEngine = struct {
230220 }
231221
232222 /// Generate recommendations based on sensitivity results
233- fn generateRecommendations (
234- self : * const AnalysisEngine ,
235- results : []const SensitivityResult
236- ) ! []const Recommendation {
223+ fn generateRecommendations (self : * const AnalysisEngine , results : []const SensitivityResult ) ! []const Recommendation {
237224 const recs = try self .allocator .alloc (Recommendation , results .len );
238225 errdefer self .allocator .free (recs );
239226
@@ -264,22 +251,15 @@ pub const AnalysisEngine = struct {
264251 }
265252
266253 /// Export results to CSV
267- pub fn exportCsv (
268- self : * const AnalysisEngine ,
269- results : []const SensitivityResult ,
270- path : []const u8
271- ) ! void {
254+ pub fn exportCsv (self : * const AnalysisEngine , results : []const SensitivityResult , path : []const u8 ) ! void {
272255 _ = self ;
273256 const file = try std .fs .cwd ().createFile (path , .{});
274257 defer file .close ();
275258
276259 const writer = file .writer ();
277260
278261 // Header
279- try writer .print (
280- "param,min_value,max_value,best_value,sensitivity_score\n " ,
281- .{}
282- );
262+ try writer .print ("param,min_value,max_value,best_value,sensitivity_score\n " , .{});
283263
284264 // Data rows
285265 for (results ) | r | {
@@ -294,10 +274,7 @@ pub const AnalysisEngine = struct {
294274 }
295275
296276 /// Generate sensitivity report (human-readable)
297- pub fn generateReport (
298- self : * const AnalysisEngine ,
299- summary : SensitivitySummary
300- ) ! []const u8 {
277+ pub fn generateReport (self : * const AnalysisEngine , summary : SensitivitySummary ) ! []const u8 {
301278 var buffer = std .ArrayList (u8 ).init (self .allocator );
302279 defer buffer .deinit ();
303280
@@ -310,13 +287,11 @@ pub const AnalysisEngine = struct {
310287 \\- Least sensitive: {s}
311288 \\
312289 \\## Recommendations
313- ,
314- .{
315- summary .n_params_analyzed ,
316- @tagName (summary .most_sensitive ),
317- @tagName (summary .least_sensitive ),
318- }
319- );
290+ , .{
291+ summary .n_params_analyzed ,
292+ @tagName (summary .most_sensitive ),
293+ @tagName (summary .least_sensitive ),
294+ });
320295
321296 for (summary .recommendations ) | rec | {
322297 try buffer .writer ().print (
@@ -325,14 +300,12 @@ pub const AnalysisEngine = struct {
325300 \\- Confidence: {d:.0%}
326301 \\- Reason: {s}
327302 \\
328- ,
329- .{
330- @tagName (rec .param ),
331- rec .suggested_value ,
332- rec .confidence * 100.0 ,
333- rec .reason ,
334- }
335- );
303+ , .{
304+ @tagName (rec .param ),
305+ rec .suggested_value ,
306+ rec .confidence * 100.0 ,
307+ rec .reason ,
308+ });
336309 }
337310
338311 return buffer .toOwnedSlice ();
@@ -368,7 +341,7 @@ test "HyperparameterAnalysis - linear parameter range" {
368341 const config = SensitivityConfig {
369342 .name = "test" ,
370343 .base_config = &[_ ]HyperparamRange {range },
371- .seeds = &[_ ]u32 { 42 },
344+ .seeds = &[_ ]u32 {42 },
372345 .dataset = .tinystories ,
373346 .epochs = 10 ,
374347 .output_path = "/tmp/test.csv" ,
@@ -397,7 +370,7 @@ test "HyperparameterAnalysis - logarithmic parameter range" {
397370 const config = SensitivityConfig {
398371 .name = "test" ,
399372 .base_config = &[_ ]HyperparamRange {range },
400- .seeds = &[_ ]u32 { 42 },
373+ .seeds = &[_ ]u32 {42 },
401374 .dataset = .tinystories ,
402375 .epochs = 10 ,
403376 .output_path = "/tmp/test.csv" ,
0 commit comments