C++ Valarray::log Function



It is designed to hold an array of values, and easily perform mathematical operations on them. It also allows special mechanisms to refer to subsets of elements in the arrays.

The natural logarithm of the values of the elements in valarray is calculated using the C++ <valarray> log() function. The cmath log() method is overloaded by this function, which calls it once for each element.

Syntax

Following is the syntax for C++ Valarray::log Function −

log (const valarray<T>& x);

Parameters

x − It is containing elements of a type for which the unary function log is defined.

Examples

Example 1

Let's look into the following example, where we are going to use log() function and retrieving the output.

#include <iostream>
#include <valarray>
using namespace std;
int main() {
   valarray<double>
   val = { 3,5,7,9,11 };
   valarray<double> valarray1 ;
   valarray1 = log(val);
   cout << "The New log"
      << " Valarray is : "
      << endl;
   for (double& x : valarray1) {
      cout << x << " ";
   }
   cout << endl;
   return 0;
}

Output

Let us compile and run the above program, this will produce the following result −

The New log Valarray is : 
1.09861 1.60944 1.94591 2.19722 2.3979  

Example 2

In the following example, we are going to use log() function and retrieving the output in exp and log for the exp generated value.

#include <iomanip>
#include <iostream>
#include <valarray>

void show(char const* title, const std::valarray<double>& va) {
   std::cout << title << " :" << std::right << std::fixed;
   for (double x : va) {
      std::cout << std::setw(8) << x;
   }
   std::cout << '\n';
}
int main() {
   const std::valarray<double> n { 0.5,4.0,6.0,8.0 };
   const std::valarray<double> exp_n { std::exp(n) };
   const std::valarray<double> log_exp_n { std::log(exp_n) };
   show("x     ", exp_n);
   show("log(x)", log_exp_n);
}

Output

Let us compile and run the above program, this will produce the following result −

x      :1.64872154.598150403.4287932980.957987
log(x) :0.5000004.0000006.0000008.000000   

Example 3

Considering the another scenario, where we are going to use log() function and retrieving the output of both original valarray and log valarray values.

#include <iostream>
#include <valarray>
using namespace std;

int main() {
   valarray<double> myvalarray = { 1.2, -3.4, 0.6, -0.7, 2.5 };
   cout << "The Orignal Valarray is : ";
   
   for (double& ele : myvalarray)
      cout << ele << " ";
   valarray<double> logValarray;
   logValarray = log(myvalarray);
   cout << "\nThe log Valarray is : ";
   
   for (double& ele : logValarray)
      cout << ele << " ";
   return 0;
}

Output

Let us compile and run the above program, this will produce the following result −

The Orignal Valarray is : 1.2 -3.4 0.6 -0.7 2.5 
The log Valarray is : 0.182322 -nan -0.510826 -nan 0.916291
Advertisements