# -*- coding: iso-8859-1 -*-

import math

#------------------------------------------------------------------------------
def cosd(x):
  """
  cosd(x)
  
  Retourne la valeur du cosinus de l'angle pass&eacute; en param&egrave;tre. 
  <strong>x</strong> est exprim&eacute; en degr&eacute;s.
  """
  return math.cos(math.radians(x))

#------------------------------------------------------------------------------
def sind(x):
  """
  sind(x)
  
  Retourne la valeur du sinus de l'angle pass&eacute; en param&egrave;tre. 
  <strong>x</strong> est exprim&eacute; en degr&eacute;s.
  """
  return math.sin(math.radians(x))

#------------------------------------------------------------------------------
def tand(x):
  """
  tand(x)
  
  Retourne la valeur de la tangente de l'angle pass&eacute; en param&egrave;tre. 
  <strong>x</strong> est exprim&eacute; en degr&eacute;s.
  """
  return math.tan(math.radians(x))

#------------------------------------------------------------------------------
def acosd(x):
  """
  acosd(x)
  
  Retourne la valeur de l'arc cosinus. L'arc cosinus d'un nombre x est l'angle y 
  (exprim&eacute; en degr&eacute;s) de l'intervalle [0, 180] dont le cosinus est x.
  """
  return math.degrees(math.acos(x))

#------------------------------------------------------------------------------
def asind(x):
  """
  asind(x)
  
  Retourne la valeur de l'arc sinus. L'arc sinus d'un nombre x est l'angle y 
  (exprim&eacute; en degr&eacute;s) de l'intervalle [-90, +90] dont le sinus est x.
  """
  return math.degrees(math.asin(x))

#------------------------------------------------------------------------------
def atand(x):
  """
  atand(x)
  
  Retourne la valeur de l'arc tangente. L'arc tangente d'un nombre x est l'angle y 
  (exprim&eacute; en degr&eacute;s) de l'intervalle [-90, +90] dont la tangente est x.
  """
  return math.degrees(math.atan(x))

#------------------------------------------------------------------------------
def coshd(x):
  """
  coshd(x)
  
  Retourne la valeur du cosinus hyperbolique de l'angle pass&eacute; en param&egrave;tre. 
  <strong>x</strong> est exprim&eacute; en degr&eacute;s.
  """
  return math.cosh(math.radians(x))

#------------------------------------------------------------------------------
def sinhd(x):
  """
  sinhd(x)
  
  Retourne la valeur du sinus hyperbolique de l'angle pass&eacute; en param&egrave;tre. 
  <strong>x</strong> est exprim&eacute; en degr&eacute;s.
  """
  return math.sinh(math.radians(x))

#------------------------------------------------------------------------------
def tanhd(x):
  """
  tanhd(x)
  
  Retourne la valeur de la tangente hyperbolique de l'angle pass&eacute; en param&egrave;tre. 
  <strong>x</strong> est exprim&eacute; en degr&eacute;s.
  """
  return math.tanh(math.radians(x))

#------------------------------------------------------------------------------
def argcosh(x):
  """
  argcosh(x)
  
  Retourne la valeur de l'argument cosinus hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en radians.
  argcosh(x) = ln(x + sqrt(x²-1))
  """
  return math.log(x + math.sqrt(x*x - 1))

#------------------------------------------------------------------------------
def argsinh(x):
  """
  argsinh(x)
  
  Retourne la valeur de l'argument sinus hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en radians.
  argsinh(x) = ln(x + sqrt(x²+1))
  """
  return math.log(x + math.sqrt(x*x + 1))

#------------------------------------------------------------------------------
def argtanh(x):
  """
  argtanh(x)
  
  Retourne la valeur de l'argument tangente hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en radians.
  argtanh(x) = 1/2 * ln( (1+x) / (1-x) )
  """
  return 0.5 * math.log((1 + x) / (1 - x))

#------------------------------------------------------------------------------
def argcotanh(x):
  """
  argcotanh(x)
  
  Retourne la valeur de l'argument cotangente hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en radians.
  argtanh(x) = 1/2 * ln( (x+1) / (x-1) )
  """
  return 0.5 * math.log((x + 1) / (x - 1))

#------------------------------------------------------------------------------
def argcoshd(x):
  """
  argcoshd(x)
  
  Retourne la valeur de l'argument cosinus hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en degr&eacute;s.
  argcosh(x) = ln(x + sqrt(x²-1))
  """
  return math.degrees(math.log(x + math.sqrt(x*x - 1)))

#------------------------------------------------------------------------------
def argsinhd(x):
  """
  argsinhd(x)
  
  Retourne la valeur de l'argument sinus hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en degr&eacute;s.
  argsinh(x) = ln(x + sqrt(x²+1))
  """
  return math.degrees(math.log(x + math.sqrt(x*x + 1)))

#------------------------------------------------------------------------------
def argtanhd(x):
  """
  argtanhd(x)
  
  Retourne la valeur de l'argument tangente hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en degr&eacute;s.
  argtanh(x) = 1/2 * ln( (1+x) / (1-x) )
  """
  return math.degrees(0.5 * math.log((1 + x) / (1 - x)))

#------------------------------------------------------------------------------
def argcotanhd(x):
  """
  argcotanhd(x)
  
  Retourne la valeur de l'argument cotangente hyperbolique pass&eacute; en param&egrave;tre. 
  L'angle retourn&eacute; est exprim&eacute; en degr&eacute;s.
  argtanh(x) = 1/2 * ln( (x+1) / (x-1) )
  """
  return math.degrees(0.5 * math.log((x + 1) / (x - 1)))

