Spec-Zone.ru › C++

std::log10(std::valarray)

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

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

Параметры

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; // proxy object may be returned
}

Пример

#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

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/valarray/log10

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API