| 225 | REGISTER_GRADIENT_OP("Asinh", AsinhGrad); |
| 226 | |
| 227 | Status AcoshGrad(const Scope& scope, const Operation& op, |
| 228 | const std::vector<Output>& grad_inputs, |
| 229 | std::vector<Output>* grad_outputs) { |
| 230 | // y = acosh(x) |
| 231 | // dy/dx = 1 / sinh(y) |
| 232 | auto dydx = Reciprocal(scope, Sinh(scope, op.output(0))); |
| 233 | // grad(x) = grad(y) * conj(dy/dx) |
| 234 | grad_outputs->push_back( |
| 235 | Mul(scope, grad_inputs[0], ConjugateHelper(scope, dydx))); |
| 236 | return scope.status(); |
| 237 | } |
| 238 | REGISTER_GRADIENT_OP("Acosh", AcoshGrad); |
| 239 | |
| 240 | Status AtanhGrad(const Scope& scope, const Operation& op, |
nothing calls this directly
no test coverage detected