I like the idea but i don't like the actual implementation. For example:
Number::tan takes an array of flags as an argument but only one flag is ever used to determine which kind of tangent method is eventually executed. For me as a user this does not only complicate the usage but it is also potentially (microoptimizationwise) slower because of the necessary condition check.
So instead of
$number = new Number(4.2);
$number->tan(array(Number::TRIG_ARC))
why not just implementing it as a separate method? $number->atan();