From 5dad6632aa87f3c7c4754c6e92808e61508e276b Mon Sep 17 00:00:00 2001 From: Marto Date: Thu, 20 Feb 2025 22:53:04 +0100 Subject: [PATCH] simpsons fix --- src/main.zig | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main.zig b/src/main.zig index dfdc55a..07e51fb 100644 --- a/src/main.zig +++ b/src/main.zig @@ -25,6 +25,8 @@ pub fn main() !void { plotGraph(); drawAxis(); try markAxis(allocator); + const area = try simpsonsRule(-5, 5, 1000000); + try displayAreaSize(area); rl.endDrawing(); } @@ -125,7 +127,7 @@ fn plotGraph() void { // f(x) fn getY(x: f32) !f32 { - return try math.calculate(x, 2, .Power) / -2 + 6; + return try math.calculate(x, 2, .Power); } fn adjustForGridSystem(input_vector: rl.Vector2) rl.Vector2 { @@ -139,11 +141,11 @@ fn adjustForGridSystem(input_vector: rl.Vector2) rl.Vector2 { return new_vector; } -fn calculateArea(val: f32) !void { - var buf: u8[20] = undefined; +fn displayAreaSize(val: f32) !void { + var buf: [20]u8 = undefined; const txt = try std.fmt.bufPrintZ(&buf, "{}", .{val}); - rl.drawText(txt, SCREENWIDTH - 75, 25, 20, rl.Color.red); + rl.drawText(txt, SCREENWIDTH - 150, 25, 20, rl.Color.red); } const SimpsonsError = error{ @@ -155,17 +157,17 @@ fn simpsonsRule(start: f32, end: f32, n: usize) !f32 { const h = (end - start) / @as(f32, @floatFromInt(n)); - var sum: f32 = getY(start) + getY(end); + var sum: f32 = try getY(start) + try getY(end); var i: usize = 1; // we iterate through amount of subintervals while (i < n) : (i += 1) { // calculate x of the slice we're adding (start + ) - const x = start + i * h; + const x = start + @as(f32, @floatFromInt(i)) * h; // determine weights 4 for odd, 2 for even - sum += if (x % 2 == 0) 2 * getY(x) else 4 * getY(x); + sum += if (@mod(i, 2) == 0) 2 * try getY(x) else 4 * try getY(x); } return (h / 3.0) * sum;