Initial commit: Pi calculation benchmark with 34 languages

- Added implementations for: bash, brainfuck, c, cpp, crystal, csharp, d, dart, elixir, erlang, fortran, go, haskell, java, javascript, julia, kotlin, objective-c, scala, typescript, lua, nim, odin, perl, php, python, r, ruby, rust, swift, zig, assembly, vimscript, wolfram
- All implementations use Machin's formula: π/4 = 4*arctan(1/5) - arctan(1/239)
- Build system with ./build.sh, test system with ./test.sh
- Performance testing with ./run_all.sh
- Comprehensive README.md explaining performance differences
- Test framework verifies correctness against known π values
This commit is contained in:
Ein Anderssono
2026-04-23 00:26:18 +02:00
commit 54d2fecee0
182 changed files with 17471 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env lua
-- Unit tests for Lua pi calculation using busted
local SCRIPT_PATH = "/Users/einand/Code/test/lua/print_hej.lua"
local function run_script(...)
local args = {...}
local cmd = "lua " .. SCRIPT_PATH
for _, arg in ipairs(args) do
cmd = cmd .. " " .. tostring(arg)
end
local handle = io.popen(cmd, "r")
local result = handle:read("*a")
handle:close()
-- Trim newline
result = result:gsub("\n$", "")
return result
end
describe("Pi calculation", function()
it("calculates 10 decimals", function()
local result = run_script(10)
local expected = "3.1415926535"
assert.are.equal(expected, result)
end)
it("calculates 5 decimals", function()
local result = run_script(5)
local expected = "3.14159"
assert.are.equal(expected, result)
end)
it("calculates 1 decimal", function()
local result = run_script(1)
local expected = "3.1"
assert.are.equal(expected, result)
end)
it("calculates 100 decimals", function()
local result = run_script(100)
local expected = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
assert.are.equal(expected, result)
end)
it("calculates default 100 decimals", function()
local result = run_script()
local expected = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"
assert.are.equal(expected, result)
end)
it("calculates 10000 decimals", function()
local result = run_script(10000)
-- Check length: "3." + 10000 digits = 10002 characters
assert.are.equal(10002, #result)
assert.is_true(string.sub(result, 1, 7) == "3.14159")
end)
end)