Defined in header <valarray> | ||
---|---|---|
template< class T > valarray<T> sqrt( const valarray<T>& va ); |
For each element in va
computes the square root of the value of the element.
va | - | value array to apply the operation to |
Value array containing square roots of the values in va
.
Unqualified function (sqrt
) is used to perform the computation. If such function is not available, std::sqrt
is used due to argument-dependent lookup.
The function can be implemented with the return type different from std::valarray
. In this case, the replacement type has the following properties:
const
member functions of std::valarray
are provided. std::valarray
, std::slice_array
, std::gslice_array
, std::mask_array
and std::indirect_array
can be constructed from the replacement type. const std::valarray&
except begin()
and end()
(since C++11) should also accept the replacement type. const std::valarray&
should accept every combination of const std::valarray&
and the replacement type. template< class T > valarray<T> sqrt( const valarray<T>& va ) { valarray<T> other = va; for (T &i : other) { i = sqrt(i); } return other; // proxy object may be returned } |
Finds real roots of multiple quadratic equations.
#include <cstddef> #include <valarray> #include <iostream> int main() { std::valarray<double> a(1, 8); std::valarray<double> b{1, 2, 3, 4, 5, 6, 7, 8}; std::valarray<double> c = -b; // literals must also be of type T until LWG3074 (double in this case) std::valarray<double> d = std::sqrt(b * b - 4.0 * a * c); std::valarray<double> x1 = (-b - d) / (2.0 * a); std::valarray<double> x2 = (-b + d) / (2.0 * a); std::cout << "quadratic equation: root 1: root 2:\n"; for (std::size_t i = 0; i < a.size(); ++i) { std::cout << a[i] << "\u00B7x\u00B2 + " << b[i] << "\u00B7x + " << c[i] << " = 0 " << std::fixed << x1[i] << " " << x2[i] << std::defaultfloat << '\n'; } }
Output:
quadratic equation: root 1: root 2: 1·x² + 1·x + -1 = 0 -1.618034 0.618034 1·x² + 2·x + -2 = 0 -2.732051 0.732051 1·x² + 3·x + -3 = 0 -3.791288 0.791288 1·x² + 4·x + -4 = 0 -4.828427 0.828427 1·x² + 5·x + -5 = 0 -5.854102 0.854102 1·x² + 6·x + -6 = 0 -6.872983 0.872983 1·x² + 7·x + -7 = 0 -7.887482 0.887482 1·x² + 8·x + -8 = 0 -8.898979 0.898979
applies the function std::pow to two valarrays or a valarray and a value (function template) |
|
(C++11)(C++11) | computes square root (\(\small{\sqrt{x} }\)√x) (function) |
complex square root in the range of the right half-plane (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/valarray/sqrt