[ { "name": "a whole power that is exact in decimal", "args": [ "1.1", 2, 1 ], "expect": "1.210000000000" }, { "name": "square root of two", "args": [ "2", 1, 2 ], "expect": "1.414213562373" }, { "name": "monthly factor of a 19.9% annual rate", "args": [ "1.199", 1, 12 ], "expect": "1.015238935953" }, { "name": "31 days of a 19.9% APR on a 365-day year", "args": [ "1.199", 31, 365 ], "expect": "1.015533447820" }, { "name": "a negative exponent discounts: 1/1.05^10", "args": [ "1.05", -10, 1 ], "expect": "0.613913253541" }, { "name": "three halves power", "args": [ "1.5", 3, 2 ], "expect": "1.837117307087" }, { "name": "a root of a number below one", "args": [ "0.5", 1, 3 ], "expect": "0.793700525984" }, { "name": "one to any power is one", "args": [ "1", 7, 365 ], "expect": "1.000000000000" }, { "name": "reciprocal of ten", "args": [ "10", -1, 1 ], "expect": "0.100000000000" }, { "name": "30 years of monthly compounding at 5.4%", "args": [ "1.0045", 360, 1 ], "expect": "5.034760199014" }, { "name": "a payday-style 1000% APR over 30 days", "args": [ "11", 30, 365 ], "expect": "1.217850333327" }, { "name": "a base with the full 18 decimal places", "args": [ "1.000000000000000001", 1000, 1 ], "expect": "1.000000000000" }, { "name": "fraction not in lowest terms gives the same answer", "args": [ "1.199", 62, 730 ], "expect": "1.015533447820" }, { "name": "zero base is refused", "args": [ "0", 1, 2 ], "expectError": "base must be greater than zero" }, { "name": "a negative base is refused", "args": [ "-1", 1, 1 ], "expectError": "base must be a positive decimal with at most 18 places" }, { "name": "more than 18 decimal places is refused", "args": [ "1.1234567890123456789", 1, 1 ], "expectError": "base must be a positive decimal with at most 18 places" }, { "name": "exponent denominator of zero", "args": [ "2", 1, 0 ], "expectError": "exponentDenominator must be between 1 and 100000" }, { "name": "exponent numerator out of range", "args": [ "2", 100001, 1 ], "expectError": "exponentNumerator must be between -100000 and 100000" }, { "name": "a result beyond 2^512 is refused", "args": [ "10", 200, 1 ], "expectError": "fractional power result too large" } ]