# MathLog The function returns a natural logarithm. ``` double  MathLog(    double  val      // value to take the logarithm    ); ``` Parameters val [in]  Value logarithm of which is to be found. Return Value The natural logarithm of val in case of success. If val is negative, the function returns NaN (undetermined value). If val is equal to 0, the function returns INF (infinity). Note Instead of MathLog() you can use log(). Example: ``` #define GRAPH_WIDTH  750 #define GRAPH_HEIGHT 350   #include    CGraphic ExtGraph; //+------------------------------------------------------------------+ //| Script program start function                                    | //+------------------------------------------------------------------+ void OnStart()   { //--- get 9 values from 0 to 8 with step 1    vector X(9,VectorArange);    Print("vector X = \n",X); //--- calculate the logarithm for each value of the X vector    X=MathLog(X);    Print("MathLog(X) = \n",X);     //--- transfer the calculated values from the vector to the array    double y_array[];    X.Swap(y_array);   //--- draw a graph of the calculated vector values    CurvePlot(y_array,clrDodgerBlue);   //--- wait for pressing the Escape or PgDn keys to delete the graph (take a screenshot) and exit    while(!IsStopped())      {       if(StopKeyPressed())          break;       Sleep(16);      }   //--- clean up    ExtGraph.Destroy();    /*    result:    vector X =     [0,1,2,3,4,5,6,7,8]    MathLog(X) =     [-inf,0,0.6931471805599453,1.09861228866811,1.386294361119891,1.6094379124341,1.791759469228055,1.945910149055313,2.079441541679836]    */   } //+------------------------------------------------------------------+ //| Fill a vector with 'value' in 'step' increments                  | //+------------------------------------------------------------------+ template  void VectorArange(vector &vec,T value=0.0,T step=1.0)    {     for(ulong i=0; i