Hi, I created a prototype, although it's pretty rough. It can overload operators and calculate not only between `BcNum` but also between `BcNum` and `int` or `string`. https://github.com/php/php-src/pull/13741
I compared the execution times. Test code: ``` <?php $start = microtime(true); $num = new BcNum('3.650000001', 10); $num2 = new BcNum('4.2335185', 10); for ($i = 0; $i < 1000000; $i++) { $num3 = str_repeat('1', rand(1, 1)); $num4 = str_repeat('1', rand(1, 1)); $num = $num + $num3; $num2 = $num2 - $num4; $num = $num + $num2; } var_dump('BcNum and string: ' . microtime(true) - $start); $start = microtime(true); $num = new BcNum('3.650000001', 10); $num2 = new BcNum('4.2335185', 10); for ($i = 0; $i < 1000000; $i++) { $num3 = new BcNum(str_repeat('1', rand(1, 1)), 10); $num4 = new BcNum(str_repeat('1', rand(1, 1)), 10); $num = $num + $num3; $num2 = $num2 - $num4; $num = $num + $num2; } var_dump('BcNum and BcNum: ' . microtime(true) - $start); $start = microtime(true); $num = '3.650000001'; $num2 = '4.2335185'; for ($i = 0; $i < 1000000; $i++) { $num3 = str_repeat('1', rand(1, 1)); $num4 = str_repeat('1', rand(1, 1)); $num = bcadd($num, $num3, 10); $num2 = bcsub($num2, $num4, 10); $num = bcadd($num, $num2, 10); } var_dump('bcadd, bcsub: ' . microtime(true) - $start); ``` Result: ``` string(33) "BcNum and string: 3.2775790691376" string(32) "BcNum and BcNum: 4.3857049942017" string(29) "bcadd, bcsub: 4.2680249214172" ``` The execution speed ranking does not change even if the calculation is done simply by adding one time. When calculating between `BcNum`, the cost of creating an instance is probably high. However, since this difference was obtained after 1 million trials, it may be safe to assume that the difference is not that big. Personally, I think the main point of this proposal is the increased convenience through operator overloading, not execution time. Regards. Saki