#include "tanh.h"
#include "../tensor.h"
#include <torch/torch.h>

namespace TensorOps {

Napi::Value Tanh(Tensor* self, const Napi::CallbackInfo& info) {
  Napi::Env env = info.Env();

  try {
    // Apply tanh activation: tanh(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))
    torch::Tensor result = torch::tanh(self->tensor);
    return Tensor::NewInstance(env, result);
  } catch (const std::exception& e) {
    Napi::Error::New(env, e.what()).ThrowAsJavaScriptException();
    return env.Undefined();
  }
}

} // namespace TensorOps
