#!/usr/bin/env ruby require './Sinus' require 'benchmark' def simpson(x0, x1, n2) dx = (x1 - x0) / n2 sum = 0 (0..(n2/2)-1).each { |i| sum = sum + Math.sin(x0 + 2*i*dx) + 2*Math.sin(x0 + (2*i + 1)*dx) } (dx/3) * (Math.sin(x1) - Math.sin(x0) + 2*sum) end puts "" [10, 100, 1000, 10000, 100000, 1000000].each { |n2| puts "-------------------------------------------------------" puts n2 puts "-------------------------------------------------------" int1 = 0 int2 = 0 Benchmark.bm(9) do |b| b.report("Ruby :") { int1 = simpson(0.0, Math::PI/2, n2) } puts "Ergebnis: #{int1}" puts "Fehler : #{(1 - int1).abs}" puts "" b.report("C :") { int2 = Sinus::simpson(0.0, Math::PI/2, n2) } puts "Ergebnis: #{int2}" puts "Fehler : #{(1 - int2).abs}" puts "" end }