// @(#)root/tmva $Id$
// Author: Helge Voss

/**********************************************************************************
 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis       *
 * Package: TMVA                                                                  *
 * Class  : TActivationReLU                                                       *
 * Web    : http://tmva.sourceforge.net                                           *
 *                                                                                *
 * Description:                                                                   *
 *      Rectified linear unit function  for an ANN.                               *
 *                                                                                *
 * Authors (alphabetical):                                                        *
 *      Helge Voss                                                                *
 *                                                                                *
 * Copyright (c) 2005:                                                            *
 *      CERN, Switzerland                                                         *
 *                                                                                *
 * Redistribution and use in source and binary forms, with or without             *
 * modification, are permitted according to the terms listed in LICENSE           *
 * (http://tmva.sourceforge.net/LICENSE)                                          *
 **********************************************************************************/
  

#include <iostream>

#include "TFormula.h"
#include "TString.h"
#include "TMath.h"

#ifndef ROOT_TMVA_TActivationReLU
#include "TMVA/TActivationReLU.h"
#endif

ClassImp(TMVA::TActivationReLU)

//______________________________________________________________________________
TMVA::TActivationReLU::TActivationReLU()
{
   // constructor for ReLU

   // sorry, I really don't know what I would possibly want to do here ;)

}

//______________________________________________________________________________
TMVA::TActivationReLU::~TActivationReLU()
{
   // destructor
}

//______________________________________________________________________________
TString TMVA::TActivationReLU::GetExpression()
{
   // get expressions for the tanh and its derivative

   TString expr = "max(0,x)";

   return expr;
}

//______________________________________________________________________________
void TMVA::TActivationReLU::MakeFunction( std::ostream& fout, const TString& fncName ) 
{
   // writes the sigmoid activation function source code
   fout << "double " << fncName << "(double x) const {" << std::endl;
   fout << "   // rectified linear unit" << std::endl;
   fout << "   return x>0 ? x : 0; " << std::endl;
   fout << "}" << std::endl;
}
 TActivationReLU.cxx:1
 TActivationReLU.cxx:2
 TActivationReLU.cxx:3
 TActivationReLU.cxx:4
 TActivationReLU.cxx:5
 TActivationReLU.cxx:6
 TActivationReLU.cxx:7
 TActivationReLU.cxx:8
 TActivationReLU.cxx:9
 TActivationReLU.cxx:10
 TActivationReLU.cxx:11
 TActivationReLU.cxx:12
 TActivationReLU.cxx:13
 TActivationReLU.cxx:14
 TActivationReLU.cxx:15
 TActivationReLU.cxx:16
 TActivationReLU.cxx:17
 TActivationReLU.cxx:18
 TActivationReLU.cxx:19
 TActivationReLU.cxx:20
 TActivationReLU.cxx:21
 TActivationReLU.cxx:22
 TActivationReLU.cxx:23
 TActivationReLU.cxx:24
 TActivationReLU.cxx:25
 TActivationReLU.cxx:26
 TActivationReLU.cxx:27
 TActivationReLU.cxx:28
 TActivationReLU.cxx:29
 TActivationReLU.cxx:30
 TActivationReLU.cxx:31
 TActivationReLU.cxx:32
 TActivationReLU.cxx:33
 TActivationReLU.cxx:34
 TActivationReLU.cxx:35
 TActivationReLU.cxx:36
 TActivationReLU.cxx:37
 TActivationReLU.cxx:38
 TActivationReLU.cxx:39
 TActivationReLU.cxx:40
 TActivationReLU.cxx:41
 TActivationReLU.cxx:42
 TActivationReLU.cxx:43
 TActivationReLU.cxx:44
 TActivationReLU.cxx:45
 TActivationReLU.cxx:46
 TActivationReLU.cxx:47
 TActivationReLU.cxx:48
 TActivationReLU.cxx:49
 TActivationReLU.cxx:50
 TActivationReLU.cxx:51
 TActivationReLU.cxx:52
 TActivationReLU.cxx:53
 TActivationReLU.cxx:54
 TActivationReLU.cxx:55
 TActivationReLU.cxx:56
 TActivationReLU.cxx:57
 TActivationReLU.cxx:58
 TActivationReLU.cxx:59
 TActivationReLU.cxx:60
 TActivationReLU.cxx:61
 TActivationReLU.cxx:62
 TActivationReLU.cxx:63
 TActivationReLU.cxx:64
 TActivationReLU.cxx:65
 TActivationReLU.cxx:66
 TActivationReLU.cxx:67
 TActivationReLU.cxx:68
 TActivationReLU.cxx:69
 TActivationReLU.cxx:70