На сервере отсутствует поддержка функций модуля. По крайней мере function_exists их не находит и вызов приводит к падению скрипта. Пытался их заменить на самопальные, но толку не вышло. Брал примеры на php.net (в описания функций приводились аналоги). PHP: if ( !function_exists('bcadd') ) { function bcadd( $left_operand, $right_operand, $scale = 0 ) { return round( $left_operand + $right_operand, $scale ); } } if ( !function_exists('bcsub') ) { function bcsub( $left_operand, $right_operand, $scale = 0 ) { return round( $left_operand - $right_operand, $scale ); } } if ( !function_exists('bcmul') ) { function bcmul( $left_operand, $right_operand, $scale = 0 ) { return round( $left_operand * $right_operand, $scale ); } } if ( !function_exists('bcpow') ) { function bcpow( $num, $power, $scale = 0 ) { $awnser = "1"; while ($power) { $awnser = bcmul($awnser, $num, 100); $power = bcsub($power, "1"); } return rtrim($awnser, '0.'); } } if ( !function_exists('bcmod') ) { function bcmod( $x, $y ) { $take = 5; $mod = ''; do { $a = (int)$mod.substr( $x, 0, $take ); $x = substr( $x, $take ); $mod = $a % $y; } while ( strlen($x) ); return (int)$mod; } } if ( !function_exists('bcdiv') ) { function bcdiv( $x, $y, $scale = 0 ) { $res = $x / $y; return round( $res, $scale ); } } Ткните что не так, ибо ранее с такими числами на php не работал. Все как-то в системном программировании (C да Asm) работал с bigInt. P.S. Цель - не работает wmsigner - вычисляется некорректная подпись. Весь остальной код уже проверен (на сервере с поддержкой bcMath все работает).
bcmath не работает как раз с числами как таковыми. она работает с их строковыми представлениями. т.е. это надо реализовывать сложение\вычитаение поразрядно, ручками.
да, я в курсе ;-) просто непонятен смысл тогда этих примеров в описании функций. да и вычисление скажем pow( 1.22334E+127, 1027 ) ручками надолго охладит пыл системы ;-) p.s. числа почти с потолка.