20 if (!function_exists(__NAMESPACE__ .
'\\tan')) {
23 $complex = Complex::validateComplexArgument($complex);
25 if ($complex->isReal()) {
26 return new Complex(\tan($complex->getReal()));
29 $real = $complex->getReal();
30 $imaginary = $complex->getImaginary();
31 $divisor = 1 + \pow(\tan($real), 2) * \pow(\tanh($imaginary), 2);
32 if ($divisor == 0.0) {
33 throw new \InvalidArgumentException(
'Division by zero');
37 \pow(sech($imaginary)->getReal(), 2) * \tan($real) / $divisor,
38 \pow(sec($real)->getReal(), 2) * \tanh($imaginary) / $divisor,