Namespaces
Variants

std::log10(std::valarray)

С ru.cppreference.net
 
 
 
 
Определён в заголовке <valarray>
template< class T >
valarray<T> log10( const valarray<T>& va );

Для каждого элемента в va вычисляет десятичный логарифм (по основанию 10) значения элемента.

Параметры

va - массив значений, к которому применяется операция

Возвращаемое значение

Массив значений, содержащий десятичные логарифмы значений в va .

Примечания

Для выполнения вычисления используется неквалифицированная функция (log10). Если такая функция недоступна, используется std::log10 из-за поиска, зависящего от аргументов.

Функция может быть реализована с типом возврата, отличным от std::valarray. В этом случае заменяющий тип обладает следующими свойствами:

  • Все constфункции-члены std::valarray предоставлены.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array и std::indirect_array могут быть созданы из заменяющего типа.
  • Для каждой функции, принимающей const std::valarray<T>& , за исключением begin() и end() (начиная с C++11), должны быть добавлены идентичные функции, принимающие заменяющие типы;
  • Для каждой функции, принимающей два const std::valarray<T>& аргумента, должны быть добавлены идентичные функции, принимающие каждую комбинацию const std::valarray<T>& и заменяющих типов.
  • Тип возврата не добавляет более двух уровней вложенности шаблонов по сравнению с наиболее глубоко вложенным типом аргумента.

Возможная реализация

template<class T>
valarray<T> log10(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = log10(i);
    return other; // может быть возвращен прокси-объект
}

Пример

#include <cmath>
#include <iomanip>
#include <iostream>
#include <valarray>
void show(char const* title, const std::valarray<float>& va)
{
    std::cout << title << " : " << std::right;
    for (float x : va)
        std::cout << std::setw(6) << x;
    std::cout << '\n';
}
int main()
{
    const std::valarray<float> n{-2.f, -1.f, 0.f, 1.f, 2.f, 3.f, INFINITY};
    const std::valarray<float> pow10{std::pow(10.f, n)};
    const std::valarray<float> log10_pow10{std::log10(pow10)};
    show("n      ", n);
    show("10ⁿ    ", pow10);
    show("lg(10ⁿ)", log10_pow10);
}

Вывод:

n       :     -2    -1     0     1     2     3   inf
10ⁿ     :   0.01   0.1     1    10   100  1000   inf
lg(10ⁿ) :     -2    -1     0     1     2     3   inf

Смотрите также

применяет функцию std::log к каждому элементу valarray
(шаблон функции)
(C++11) (C++11)
вычисляет десятичный логарифм (по основанию 10 ) ( log 10 (x) )
(функция)
комплексный десятичный логарифм с разрезом ветви вдоль отрицательной вещественной оси
(шаблон функции)